Strza?eczka przychodz? z ma?ym problem, pr?bowa?em go sam rozwi?za? wzoruj?c si? na podobnym wzorze, ale w og?le, to nie dzia?a?o
Stworzy?em pickup, po wej?ciu do niego mamy mo?liwo?? wyboru skinu i to wszystko mi dzia?a. Problem polega na tym, ?e nie potrafi? zakodowa? czy gracz ma ju? dany skin.
Zak?adamy, ?e posta? ma skin od ID: 3. Wchodzi do pickupa i wy?wietla si? nam menu ze skinami i w?r?d nich jest skin od ID: 3. I teraz chodzi o to, ?e jak wybierzemy skin od ID: 3 wy?wietli nam si? komunikat, ?e mamy ju? ten skin na sobie.
Na pocz?tek tworzysz zmienn? typu int i pobierasz do niej skin gracza:
Nast?pnie sprawdzasz, czy pobrany skin gracza jest r?wny interesuj?cemu Ciebie skinowi i je?li tak - wysy?asz komunikat:
Gotowy kod:
@@Szymon9910911 przecie? wyja?ni?em mu jak ma zrobi? to co chce i kod sformu?owa?em tak jak On to robi, wi?c co Ty mi tutaj czarujesz o jaki? dynamicznych dyrdyma?ach.
Ostatnio zmieniony przez KurczakSwaj 2016-10-28, 16:59, w całości zmieniany 1 raz
Mu chodzi o to aby to chyba by?o dynamicznie a wi?c musisz zrobi? sprawdzanie czy dany skin jest r?wny temu kt?ry ma na sobie. Czy ko?ystasz z mSelection b?dz podobnego czego? ? czy sam zrobi?e? wybieranie ?
[ Dodano: 2016-10-28, 16:55 ]
Soory m?j b??d nie sprawdzi?em pastebinda. Zr?b tak jak napisal k?rczak swaj czyli
w ka?dym cashe daj sprawdzanie
Na pocz?tek tworzysz zmienn? typu int i pobierasz do niej skin gracza:
new skin=GetPlayerSkin(playerid);
Nast?pnie sprawdzasz, czy pobrany skin gracza jest r?wny interesuj?cemu Ciebie skinowi i je?li tak - wysy?asz komunikat:
if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");
Gotowy kod:
new skin=GetPlayerSkin(playerid);
if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");
SetPlayerSkin(playerid, 3);
@@Szymon9910911 przecie? wyja?ni?em mu jak ma zrobi? to co chce i kod sformu?owa?em tak jak On to robi, wi?c co Ty mi tutaj czarujesz o jaki? dynamicznych dyrdyma?ach.
Wi?c sprawa wygl?d tak - nie wiem na ile dobry jest spos?b, kt?ry przedstawi?, ale nic innego mi do g?owy nie przychodzi - je?li kto? ma jakie? lepsze rozwi?zania to ?mia?o - pomo?ecie zar?wno mi i autorowi w?tku
Ja bym zrobi? to tak, ?e tworzymy zmienn? global? Boolean dla wszystkich graczy, kt?ra b?dzie warunkiem do wy?wietlania dialogu przy podniesieniu pickupu.
1. Tworzymy zmienn? gdzie? na g?rze mapy:
new ZmieniaSkin[MAX_PLAYERS];
2. Ustawiamy na "false" przy wej?ciu na serwer:
public OnPlayerConnect(playerid)
{
ZmieniaSkin[playerid]=false;
return 1;
}
3. Dodajemy warunek przy wchodzeniu w pickup i zmieniamy warto?? naszej zmiennej je?li zostanie spe?niony:
Tworzenie tablicy globalnie w celu wykorzystania jej tylko w jednym miejscu, brawo.
StrSkiny = "";
Genialne czyszczenie tablicy, brawo po raz drugi.
for(new x; x != 311; ++ x)
Skin?w jest 312, od ID 0 do 311, liczenie trudna rzecz, brawo po raz trzeci.
if(x != 74)
Tutaj warunek da?e?. Ciekawe, czy da?e? go r?wnie? w dialogu - wiem, nie da?e?. Wybior? sobie w dialogu skin ID 200 a dostan? skin ID 199, brawo po raz czwarty. M?g?bym jeszcze si? przyczepi? do u?ywania PVar'?w, ale ju? sobie odpuszcz?. Brawo pseudo-pawnerze, cztery proste b??dy na kilkana?cie linijek kodu xD
Ale od kiedy u?ycie PVar'?w jest b??dem h?? Po to zosta?y one stworzone, aby je u?ywa?. Ci kt?rzy wiedz? jak one dzia?aj?, nie u?ywaj? ich albo po prostu u?ywaj? ale w rzadkich miejscach.
Po za tym, co ty masz do czyszczenia stringa za pomoc? = ""; ? jak tak bardzo ci? to boli, mog? zmieni? to na EOS
(powiem szczerze ?e przyzwyczai?em si? do takiego czyszczenia i jako? mi to wbi?o w nawyk - ale pod ?ADNYM pozorem to nie jest b??d)
A z tym != 74 masz racj?, moja pomy?ka. Skin powy?ej > 74 b?dzie o +1 do przodu, ale to te? mo?na bardzo ?atwo naprawi?.
PS: Nie, lepiej tworzy? tak jak w twoim pseudo-gamemodzie do ka?dego dialogu now? du?? tablic? <ironia>
Nigdzie nie napisa?em, ?e jest to b??d. Wyra?nie napisa?em, ?e sobie odpuszcz?. S? one po prostu wolne, dlatego lepiej u?ywa? tablic.
Po za tym, co ty masz do czyszczenia stringa za pomoc? = "";
Jest wolniejsze, na 10000000 powt?rze? to ~150ms. Pewnie napiszesz: to jest w og?le nieodczuwalne, a ja napisz?: po co u?ywa? wolniejszych rozwi?za?? Kilka milisekund tu, kilka tam i tak si? nazbiera z powodu dziwnych nawyk?w.
lepiej tworzy? tak jak w twoim pseudo-gamemodzie do ka?dego dialogu now? du?? tablic?
Ka?dy dialog? ?mieszne, jedyne miejsce gdzie tworzy?em du?e tablice to spis komend albo toplista, a wiadomo, ?e tam troch? tekstu si? znajduje. No chyba, ?e co? przegapi?em, to mnie poinformuj. Teraz poka? sw?j gamemod xD
Co ma liczba graczy do skryptu serwera? Skrypt mo?e by? g?wnem, a pomimo to serwer mo?e mie? graczy, dowodem jest ?mieszna ibiza nawet nie masz odwagi, by si? przedstawi?, a co dopiero pokaza? sw?j kod. No tak w zasadzie, to ju? pokaza?e? co potrafisz kilka linijek wy?ej xD
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach