Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2016-10-28, 16:03


BartusBartus







Wiek: 26
Na forum: 3516 dni
Posty: 78
Nick w MP: BartusBartus



Respekt: 50

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 :D

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.

Kod:
http://pastebin.com/5mvJFvxh

Kod z moich pr?b:
http://pastebin.com/fkq90bFW

Z g?ry m?wi?, ?e jestem zielony i dopiero zaczynam, za pomoc oczywi?cie zimne piwko :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-28, 16:32


KurczakSwaj







Wiek: 27
Na forum: 4902 dni
Posty: 119
Nick w MP: KurczakSwaj

Piwa: 121

Respekt: 102
Respekt: 102

Na pocz?tek tworzysz zmienn? typu int i pobierasz do niej skin gracza:
Kod:

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:
Kod:

if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");


Gotowy kod:
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.

Ostatnio zmieniony przez KurczakSwaj 2016-10-28, 16:59, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-28, 16:51


Szymon9910911







Wiek: 25
Na forum: 4137 dni
Posty: 251
Nick w MP: Tetral [you]

Piwa: 9

Respekt: 70

"KurczakSwaj" napisał/a:

Na pocz?tek tworzysz zmienn? typu int i pobierasz do niej skin gracza:
Kod:

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:
Kod:

if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");


Gotowy kod:
Kod:



new skin=GetPlayerSkin(playerid);
if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");
SetPlayerSkin(playerid, 3);

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
Pawn
if(GetPlayerSkin(playerid) == ID_SKINA_JAKI_MA_DAC)
{
    SetPlayerSkin(playeridID_SKINA_JAKI_MA_DAC);
}
else
{
    SendClientMessage(playerid0x88872232"Masz ju? tego skina!");
}


[ Dodano: 2016-10-28, 16:56 ]
lub tak jak pokaza? kurczak

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-28, 17:56


BartusBartus







Wiek: 26
Na forum: 3516 dni
Posty: 78
Nick w MP: BartusBartus



Respekt: 50

"KurczakSwaj" napisał/a:

Na pocz?tek tworzysz zmienn? typu int i pobierasz do niej skin gracza:
Kod:

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:
Kod:

if(skin==3) return SendClientMessage(playerid, -1, "Posiadasz ju? wybrany skin!");


Gotowy kod:
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.


Dzi?ki kolejny raz za pomoc ;P

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-28, 19:14


KurczakSwaj







Wiek: 27
Na forum: 4902 dni
Posty: 119
Nick w MP: KurczakSwaj

Piwa: 121

Respekt: 102
Respekt: 102

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:
Kod:

new ZmieniaSkin[MAX_PLAYERS];


2. Ustawiamy na "false" przy wej?ciu na serwer:
Kod:


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:
Kod:


if(pickupid == clothing1 && ZmieniaSkin[playerid]==false)
{
ZmieniaSkin[playerid]=true;
ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "wybierz skin", "Skin 1\nSkin 2\nSkin 3", "Wybierz", "Anuluj");
return 1;
}


4. Gdzie? na dole mapy tworzymy public potrzebny do ustawienia naszej zmiennej:
Kod:


forward ZmienilSkin(playerid);
public ZmienilSkin(playerid)
{
ZmieniaSkin[playerid]=false;
return 1;
}


5. Przy zatwierdzonej zmianie skina odpalamy timer wywo?uj?cy utworzonego publica, gdzie "10000" to czas podany w milisekundach (10000=10sek):
Kod:


SetTimerEx("ZmienilSkin", 10000, false, "i", playerid);


Takim sposobem graczowi po zmianie skina nie zostanie wy?wietlony dialog przy wej?ciu w pickup przez czas 10 sekund od zamkni?cia w/w dialogu.


@@edit
Kolega chyba si? rozmy?li? :p Zanim doda?em post zosta? edytowany ^^


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-28, 22:48


DeBooM.







Wiek: 29
Na forum: 3530 dni
Posty: 14
Nick w MP: a co cie to xd

Piwa: 2

Respekt: 70

Ostrzeżeń: 100%
Oczywi?cie jak zwykle na GTAO dostaniesz ?mieciowy kod od pseudo pawner?w...

Kod:


new StrSkiny[12*312];

#define DIALOG_SKIN 0 // ID Skinu

// OnPlayerPickUpPickup
if(pickupid == gshop) // Tw?j pickup
{
if(GetPVarInt(playerid, "skin_block") > gettime()) return 1;

StrSkiny = "";

for(new x; x != 311; ++ x) {
if(x != 74) format(StrSkiny, sizeof StrSkiny, "%sSkin %d\n", StrSkiny, x);
}

ShowPlayerDialog(playerid, DIALOG_SKIN, DIALOG_STYLE_LIST, "Wybierz skin", StrSkiny, "Zmie?", "Anuluj");
SetPVarInt(playerid, "skin_block", gettime() + 10); // Zablokowanie wy?wietlania dialogu na 10 sekund

return 1;
}

// DialogResponse

if(dialogid == DIALOG_SKIN && response) {
if(GetPlayerSkin(playerid) == listitem) return SendClientMessage(playerid, -1, "Masz ju? taki skin!");

format(inputtext, 50, "Zmieni?e? sw?j skin na %d", listitem);
SendClientMessage(playerid, -1, inputtext);

SetPlayerSkin(playerid, listitem);

return 1;
}


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-30, 10:22


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
Kto tutaj daje ?mieciowy kod, jaki? pseudo-pawner lol

Kod:

new StrSkiny[12*312];


Tworzenie tablicy globalnie w celu wykorzystania jej tylko w jednym miejscu, brawo.

Kod:

StrSkiny = "";


Genialne czyszczenie tablicy, brawo po raz drugi.

Kod:

for(new x; x != 311; ++ x)


Skin?w jest 312, od ID 0 do 311, liczenie trudna rzecz, brawo po raz trzeci.

Kod:

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

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-30, 10:47


DeBooM.







Wiek: 29
Na forum: 3530 dni
Posty: 14
Nick w MP: a co cie to xd

Piwa: 2

Respekt: 70

Ostrzeżeń: 100%
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 lol
(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? :mrgreen: <ironia>

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-30, 12:39


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
"DeBooM." napisał/a:

Ale od kiedy u?ycie PVar'?w jest b??dem h??


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.

"DeBooM." napisał/a:

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.

"DeBooM." napisał/a:

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

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-10-30, 15:10


Combacior







Wiek: 29
Na forum: 5795 dni
Posty: 1516

Piwa: 2161

Respekt: 1060
Respekt: 1060

Ostrzeżeń: 20%
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 :eye: 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

//EDIT

FRAJEROWY xD

Postaw piwo autorowi tego posta
 

 
Tagi: skin
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » PAWN Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

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
Dodaj temat do Ulubionych
Wersja do druku