-
Příspěvků
806 -
Registrován
-
Aktivní
-
Vítězných dnů
4
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by ĐaVe
-
-
Autor tématu klade zcela jasnou otázku. Proč mu vysvětlovat (ještě k tomu špatně), co dělají styly dialogu? Tak si tu nech ty svoje idiotský kecy a nepoužitelný příklady použití. Tvůj edit potvrzuje tvoji inteligenci a znalosti.. Gratuluju.. machruješ, že znáš switch strašně je výhodné použít switch u "boolean" proměnné
spatne? hochu ty jsi asi dobrej defektor... napsal jsi mu prakticky to samy co ja a jeste zjednodusene a meles tu kecy.... di si naliskat.. ze ja se vbc hadam s defektorem jako jsi ty... ocasu, vim jak jsem delal svuj mod ne? a asi nevis kolik tam mam dialogu co magore? vse jsem delal jak jsem mu vesvetlil vzpamatuj se!!!!
pokud vyuzijes DIALOG_STYLE_LIST tak das if(dialogid == 13 && response) napr...
ale kdyz das DIALOG_STYLE_INPUT , DIALOG_STYLE_PASSWORD nebo DIALOG_STYLE_MSGBOX tak
if(response == 1) //pokud klikne na prvni tlacitko
if(response == 0) //pokud klikne na druhe tlacitko
Ty DaVeho nesmysly ani necti
Pokud je response true (1), hrac klikl na leve tlacitko.
Pokud je response false (0), stiskl prave tlacitko
defekte
if(dialogid == 1) { switch(response) { case 0: ShowPlayerDialog(playerid,... //akce 2. talcitka case 1: ShowPlayerDialog(playerid,...//akce 1. tlacitka } }
asi by to neslo ze? magore naxuc se pawno dospej at trosku chapes a nemeles kecy, pak debatuj
-
to asi ne, protoze ATomas tam ma vlastni AntiMoneyCheat kterej asi udelal si myslim upa stejnew jako ja v TT
- 1
-
Ty DaVeho nesmysly ani necti
Pokud je response true (1), hrac klikl na leve tlacitko.
Pokud je response false (0), stiskl prave tlacitko
nesmysly? ty tu pises upa stejny co ja s tim rozdilem ze ja mu to vysvetluju podrobnejc.... jinak sis asi nevsiml ze vyuzil DIALOG_STYLE_LIST a zadal zobrazeni dialogu co se zobrazi po kliknuti na ahoj cau nebo nazdar ci jak a v tom se vyuziva listem
//EDIT: co je rychlejsi? kdyz napises false nebo 0? ci 1 nebo true? dokonce lze vyuzit switch(response) ale to ty asi nevis
-
Ještě mám otázku, jak to pozná že když kliknu na Zavřít, že to má zavřít? Tohle potřebuji
pokud vyuzijes DIALOG_STYLE_LIST tak das if(dialogid == 13 && response) napr...
ale kdyz das DIALOG_STYLE_INPUT , DIALOG_STYLE_PASSWORD nebo DIALOG_STYLE_MSGBOX tak
if(response == 1) //pokud klikne na prvni tlacitko
if(response == 0) //pokud klikne na druhe tlacitko
-
ondialogresponse:
if(dialogid == 13 && response) { if(listitem == 0) { ShowPlayerDialog(playerid,14,DIALOG_STYLE_MSGBOX,"Zkouška","zvolil jsi Ahoj","Další","Zavřít"); } if(listitem == 1) { ShowPlayerDialog(playerid,14,DIALOG_STYLE_MSGBOX,"Zkouška","zvolil jsi Cau","Další","Zavřít"); } if(listitem == 2) { ShowPlayerDialog(playerid,14,DIALOG_STYLE_MSGBOX,"Zkouška","zvolil jsi Nazdar","Další","Zavřít"); } }
listitem vyuzijes kdyz vyuzijes DIALOG_STYLE_LIST
response vyuzijes pri DIALOG_STYLE_INPUT , DIALOG_STYLE_PASSWORD , DIALOG_STYLE_MSGBOX
-
vytvoris promennou,porovnas vsechny koupene domy a nastavis pri kazdem provereni ze s nickem hrace ze pokud mu dum patri tak promenna++;.. nakonec az porovnas vse das dolu
if(promenna > 1)
tak mu to odebere domy.... budes u toho muset vyuzit k promenne definici
MAX_PLAYERS
tudiz to nebude promenna ale promena[playerid]
Si tam vytvoř proměnou
Po registraci jí nastav na 0 a když si koupí dům tak proměnou nastav na 1
A když si bude chtít koupit dům a proměnou bude mít na 1 tak mu to dům neprodá
Až dům prodá tak mu zase proměnou nastav na 0..
Nejsem zrovna typ člověka který dokáže něco pořádně vysvětlit, ale snad ti tohle pomůženebo, taky dobre reseni
jen pokud bych rozhodoval mezi 0 a 1 promennou, vyuzil bych
new bool:promenna[MAX_PLAYERS] = false; //kontrola pri koupeni domu if(promenna[playerid] == true) return SendClientMessage(playerid,-1,"Již vlastníš jeden dům"); //pri koupi domu: promenna[playerid] = true; //prodej + public OnPlayerConnect(playerid): promenna[playerid] = false;
nezapomen pri loginu nacist promennou ze souboru a v OnPlayerDisconnect(playerid,reason) ulozeni promenne
-
To ešte je v móde robiť takéto nefunkčné/polofunkčné systémy ktorých je milión a kopec z toho lepších? (rečnícka otázka ^.^)
Ach jaj, tak sa do toho vrhneme... (budem používať spoiler lebo keď som použil code tak sa po prvom zmazalo všetko ostatné ^.^ gj AT)
- Knižnica ktorá potrebuje aby som niečo mal dať do gamemode je na P**U ^.^ Oh cmon guyz je rok 2015 a tu asi nikto nevie hookovať callbacky/funkcie
public OnGameModeInit()
{
SetTimer("StreamerControll",1000,true);
for(new i=0; i<MAX_PLAYERS; i++)
{
for(new o=0; o<MAX_DYNAMIC_OBJECTS; o++)
{
COE[o] = false;
}
}
#if defined ObjStreamer_OnGameModeInit
return ObjStreamer_OnGameModeInit();
#else
return 1;
#endif
}
#if defined _ALS_OnGameModeInit
#undef OnGameModeInit
#else
#define _ALS_OnGameModeInit
#endif
#define OnGameModeInit ObjStreamer_OnGameModeInit
#if defined ObjStreamer_OnGameModeInit
forward ObjStreamer_OnGameModeInit();
#endif
a už netreba dávať nič do OnGameModeInit
To isté s OnPlayerConnect
public OnPlayerConnect(plyerid)
{
for(new o=0; o<MAX_DYNAMIC_OBJECTS; o++)
{
COE[playerid][o] = false;
}
#if defined ObjStreamer_OnPlayerConnect
return ObjStreamer_OnPlayerConnect(plyerid);
#else
return 1;
#endif
}
#if defined _ALS_OnPlayerConnect
#undef OnPlayerConnect
#else
#define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect ObjStreamer_OnPlayerConnect
#if defined ObjStreamer_OnPlayerConnect
forward ObjStreamer_OnPlayerConnect(plyerid);
#endif
- Premeny majú divné pomenovanie, moc obyčajné pomenovanie čo môže byť problém ak by bol niekto (o.O) až taký odvážny alebo až taký blázon a použil to vo svojom móde a mal by premenu new Object; tak by to hádzalo errory npr. Streamaer_Objects
- Podmienka je blbosť, lebo ak by si vytvoril tisíci objekt (čiže by celkemvytvoreno malo hodnotu 1000) tak by si už bol mimo veľkosť pola lebo veľkosť poľa je od [0] po [999] a neexistujúcemu polu by si nastavil hodnoty
if(celkemvytvoreno > MAX_DYNAMIC_OBJECTS) { printf("ERROR: Překročená definice MAX_DYNAMIC_OBJECTS"); }
- Globálna premena "DOmsg[70];" je zbytočná o.O Využil si to iba tu
format(DOmsg,70,"Vytvářím %d. dynamický objekt",celkemvytvoreno);
printf(DOmsg);
Tam by sa dala použiť normálne lokálna premena a btw... vieš o tom že existuje printf?
printf("Vytvářím %d. dynamický objekt",celkemvytvoreno", celkemvytvoreno);
Ja som myslel, že print a printf je základ
- Si si vedomý, že novo vytvorená premena má hodnotu 0 že? Lebo keby si si toho bol vedomý tak by si vedel že toto je chujovina
stock Streamer_OnInit()
for(new i=0; i<MAX_PLAYERS; i++)
{
for(new o=0; o<MAX_DYNAMIC_OBJECTS; o++)
{
COE[o] = false;
}
}
- CreateDynamicObject nemá žiadnu návratovú hodnotu, takže sa nedá potom s objektom pohybovať/mazať
- Ou ja som zabudol DestroyDynamicObject nefunguje ^.^ Nemáš vôbec žiadnu premenu na to, že je objekt zmazaný. Zmaže sa len tým hráčom, ktorým je objekt streamovaný (čiže stačí sa vzdialiť a vrátiť a objekt tam je znovu)
- Znova DestroyDynamicObject ^.^ Ty asi nevieš čo to je testovanie že?
DestroyPlayerObject(i,CO[objectid]);
Nemá to byť náhodou
DestroyPlayerObject(i,CO[objectid]);
- A znova... čo tam tak dať podmienku že má hráč ten objekt vytvorený (streamovany)?
- Je pekné že máš rád MoveObject ~ MoveDynamicObject Ale prečo nastavuješ 1000x pozíciu objektu?
stock MoveDynamicObject(objectid,Float:ToX,Float:ToY,Float:ToZ,Float:speed,Float:torx,Float:tory,Float:torz)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && COE[objectid] == true)
{
MovePlayerObject(objectid,CO[objectid],ToX,ToY,ToZ,speed,torx,tory,torz);
}
Object[objectid][sTREAMER_x] = ToX;
Object[objectid][sTREAMER_y] = ToY;
Object[objectid][sTREAMER_z] = ToZ;
Object[objectid][sTREAMER_Rx] = torx;
Object[objectid][sTREAMER_Ry] = tory;
Object[objectid][sTREAMER_Rz] = torz;
}
}
- StopDynamicObject je iná káva ^.^ Prečo tam je tá premena pocet? Je v cykle takže môže mať hodnotu iba 0 alebo 1. Aha no jasne, povedal si si že nastavovať pozíciu objektu 1000x je moc mainstream tak to urobíš iba toľko krát, koľko ľuďom je ten objekt streamovaný i get it [ale čo ak ten objekt nie je nikomu nestramovaný, tak sa nestopne a neprenastavia sa hodnoty pre streamovanie?]
stock StopDynamicObject(objectid)
{
for(new i=0; i<MAX_PLAYERS; i++)
{
new Float:ToX, Float:ToY, Float:ToZ, Float:torx, Float:tory, Float:torz, pocet = 0;
if(IsPlayerConnected(i) && COE[objectid] == true)
{
StopPlayerObject(objectid,CO[objectid]);
GetPlayerObjectPos(i,CO[objectid],ToX,ToY,ToZ);
pocet++;
}
if(pocet != 0) { Object[objectid][sTREAMER_x] = ToX; Object[objectid][sTREAMER_y] = ToY; Object[objectid][sTREAMER_z] = ToZ; Object[objectid][RSTREAMER_x] = torx; Object[objectid][sTREAMER_Ry] = tory; Object[objectid][sTREAMER_Rz] = torz; }
}
}
- Streamer_OnPlayerDisconnect(playerid) Chýba podmienka či je objekt streamovany (vytvorený)
- A čerešnička na torte .... StreamerControll()
Je to úplne zle. Čo to je za logiku? Jaj, to nemá logiku
for(new i=0; i<MAX_PLAYERS; i++)
{
for(new o=0; o<MAX_DYNAMIC_OBJECTS; o++)
{
if(IsPlayerConnected(i))
{
Najskôr precyklíme 1000 hráčov ale to nestačí horste! My to totiž môžeme cykliť 1000*MAX_DYNAMIC_OBJECTS aby sme prišli na to, že hráč nie je na servery (bola by to prdel to niekomu dať na server a MAX_DYNAMIC_OBJECTS nastaviť na hodnotu .... 25 000)
- Namiesto IsPlayerInRangeOfPos by si mal urobiť nejaké zóny bolo by to omnoho efektívnejšie
- Kašlite na amatérske object streamery a použite nejaký ktorý je osvedčený
EDIT ^.^ a to týpek nad týmto potom napísal že nemá žiadny problém... oh my god
EDIT2 Ale chápem, je to pekné (*pekne vtipné) keď ti napíšu že to je super, síce ani nevedia čo to je, nevedia že je to takmer nefunkčné ale čo, koment treba a samozrejme karma+ musí byť...nj co si budem nalhavat mas pravdu asi bych to rovnou smazal lepsi vyuzit Incognito Object Streamer ten je osvedceny ale aspon jsem se zasmal jak jsi to popisoval
pripadne jak se mi bude chtit a jak budu mit cas to upravim dle tvyho navodu, diky
-
pěkný
diky jen kdo chcete tak si to prosim stahnete znovu, mel jsem tam bug
-
nejak me to zaclo bavit diky ti
-
sam nevim co to "hook" je zatim jen 4 funkce
CreateDynamicObject(modelid,Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ) DestroyDynamicObject(objectid) MoveDynamicObject(objectid,Float:ToX,Float:ToY,Float:ToZ,Float:speed,Float:torx,Float:tory,Float:torz) StopDynamicObject(objectid)
jojo qwer mi to zkritizuje a tak aspon se poucim
jo jinak testoval jsem jen CreateDynamicObject tak kdyby neco neslo napiste
-
tak dneska jsem byl u kamose na serveru a mel tam jeden barak co se mu pres streamer spatne nacital tak jsem mu rekl ze mu udelam streamer... povedlo se uz ho ma
POPIS:
===============================================================================================================
= **** * * **** * ======================
= * * * * * * * ======================
= * * *** * * *** * **** ======================
= * * * * * * **** * * * ** *** *** * * * *** * * ======================
= ***** *** * ** * * * ** * **** * * ** * * **** ** * ======================
= *** * * * * * * * * * * * * * * ======================
= *** *** * *** *** * * * * *** * ======================
===============================================================================================================
= DaVe Object Streamer = verze 1.0 = Vytvořeno: 8.3.2015 ======================================================
===============================================================================================================
Použití includu:
1) nakopírujte tento include do pawno/include
2) Do vyšeho pawno scriptu zadejte úplně nahoru include <DOS>
3) do vašeho scriptu přiřaďte do publiců:OnFilterScriptInit() / OnGameModeInit() (dle vašeho scriptu)-> Streamer_OnInit() OnPlayerConnect(playerid) -> Streamer_OnPlayerConnect(playerid) OnPlayerDisconnect(playerid) -> Streamer_OnPlayerDisconnect(playerid)
4) Využijeme funkce:CreateDynamicObject(modelid,Float:X,Float:Y,Float:Z,Float:rX,Float:rY,Float:rZ) DestroyDynamicObject(objectid) MoveDynamicObject(objectid,Float:ToX,Float:ToY,Float:ToZ,Float:speed,Float:torx,Float:tory,Float:torz) StopDynamicObject(objectid)
5) upravíme definici MAX_DYNAMIC_OBJECTS v tomto includu na počet vašich vytvořených objektů
(aby jste je nemuseli počítat, podívejte se do server.log, include vám napíše kolik objektů vytvořil):#define MAX_DYNAMIC_OBJECTS 2000 //(toto je příklad jenom)
STREAMER TESTOVÁN NA MÓDU HARRY POTTER
Jak na to? jednoduchý příklad tady ve spoileru
#include a_samp #include DOS public OnGameModeInit() { Streamer_OnInit(); CreateDynamicObject(/*sem pozice id a vse co tam patri */); CreateDynamicObject(/*sem pozice id a vse co tam patri */); return 1; } public OnPlayerConnect(playerid) { Streamer_OnPlayerConnect(playerid); return 1; } public OnPlayerDisconnect(playerid) { Streamer_OnPlayerDisconnect(playerid); return 1; }
v tomto pripade jsme vyuzili pouze 2 objekty, tudiz otevreme potom include a upravime definici:
#define MAX_DYNAMIC_OBJECTS 2
-
krasny je to piplacka to znam jak jsem mapoval napriklad veznici v TT tady tu "bytovku" ci jak to mam nazvat jsme kdysi taky meli v planu do TT namapovat uz k tomu nedoslo pekne si maknes jestli budes mapovat vsecky patra drzim palce
-
pokud chces na vyber 3-6 aut, je lepsi vyuzit DIALOG_STYLE_LIST ... pokud chces vyuzit DIALOG_STYLE_INPUT, to je lepsi vyuzit na jakekoliv id nasledovne:
if(dialogid == 1) { if(response == 1) { if(!strlen(inputtext) || strval(inputtext) < 400 || strval(inputtext) > 611) return SendClientMessage(playerid,-1,"zadej id vozidla, rozmezi je 400-611"); new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); CreateVehicle(strval(inputtext),x,y,z,90,-1,-1,false); } }
samozrejme nezapomen vyuzit ShowPlayerDialog
jinak ten prvni kod co jsem ti psal patri samozrejme do ondialogresponse
- 1
-
muzu jestli chces
-
jasne, napr:
public OnPlayerConnect(playerid) { TextDrawShowForPlayer(playerid,TDweb); return 1; }
-
TextDrawShowForAll(text);
no to zalezi kdy to chces odhalit... pokud az se hrac spawne tak do OnPlayerSpawn ... pokud az se pripoji tak do OnPlayerConnect ... show=ukazat hide = skryt, tim chci rict ze je TextDrawShow... a TextDrawHide...
-
TextDrawShowForPlayer(playerid,text); -
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i)) { SetPlayerHealth(i,100); }
} -
normalni VirtualWorld by mel byt 0 a nemelo by to byt nijak omezeny
-
piše to toto
:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2553) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2554) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2555) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2556) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2557) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2558) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2559) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2560) : error 017: undefined symbol "RealClock" C:\Users\JAKUB\Desktop\pawno\RZE1.pwn(2561) : error 017: undefined symbol "RealClock"
mám udelat něco jako toto ?
new Text:TDlogo, Text:TDweb, Text:Clock; Text:RealClock;
jojo undefined znamena ze ten vyraz nmas definovany... kdyz v pawnu chces neco delat musis definovat
jen ti to da error pac tam mas dvojtecku s carkou misto carky, uprav to na toto:
new Text:TDlogo, Text:TDweb, Text:Clock, Text:RealClock;
- 1
-
nahoru pod #include
new Text:TDlogo, Text:TDweb, Text:Clock;
-
nebo jde i takhle
public OnGameModeInit() { AddTunnedVehicle(411,-1995.0000000,1066.2000000,55.4000000,206.0000000,-1,255,15); //Infernus AddTunnedVehicle(411,-1999.0000000,1066.2002000,55.4000000,205.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2003.0000000,1066.2002000,55.4000000,205.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2007.0000000,1066.2002000,55.4000000,205.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2011.0000000,1066.2002000,55.4000000,205.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2015.0000000,1066.2002000,55.4000000,205.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2018.7000000,1060.9000000,55.4000000,269.9990000,-1,255,15); //Infernus AddTunnedVehicle(411,-2018.7002000,1056.9004000,55.4000000,269.9950000,-1,255,15); //Infernus AddTunnedVehicle(411,-2018.7002000,1052.9004000,55.4000000,269.9950000,-1,255,15); //Infernus AddTunnedVehicle(411,-2018.7002000,1048.9004000,55.4000000,269.9950000,-1,255,15); //Infernus AddTunnedVehicle(411,-1987.7002000,1060.9004000,55.4000000,90.0000000,-1,255,15); //Infernus AddTunnedVehicle(411,-1987.7002000,1056.9004000,55.4000000,90.0000000,-1,255,15); //Infernus AddTunnedVehicle(411,-1987.7002000,1052.9004000,55.4000000,90.0000000,-1,255,15); //Infernus return 1; } stock AddTunnedVehicle(id,Float:x,Float:y,Float:z,Float:za,c1,c2,respawn) { AddStaticVehicleEx(id,x,y,z,za,c1,c2,respawn); AddVehicleComponent(id,1010); AddVehicleComponent(id,1019); ChangeVehicleColor(id,229,229); }
ale samozrejme rychlejsi varianta to neni
leda bys vyuzil tenhle web a definoval si tam AddTunedVehicle aby ti to prevedlo z AddStaticVehicleEx do AddTunnedVehicle je to mozna varianta
-
Trošku nechápu tvůj způsob když nastavíš zavod[playerid] na 2 kdyz nasleduje 1
public OnPlayerEnterRaceCheckpoint(playerid) { switch(Zavod[playerid]) { case 0: { Zavod[playerid] = 2; DisablePlayerRaceCheckpoint(playerid); SetPlayerRaceCheckpoint(playerid,0,-2000.2214,1045.5718,55.3414,-2004.3630,883.2788,45.0700,20); } case 1: { Zavod[playerid] = 3;
zkus misto
Zavod[playerid] = 3; Zavod[playerid] = 2; //atd
dat tohle:
Zavod[playerid] += 1;
-
skúšal si to hladat na google...?
a ty? kdyz te tu zada o pomoc?
Dialog přepínání a zavírání
v Herní (SA:MP, CS apod.)
Odesláno: · Edited by ĐaVe
deb*le fakt deb*lita... on tam ma
hadej proc jsem to tam pletl kdyz jsem mu prakticky odpovidal na co se ptal? twl no dost ukoncuju debatu toto nikam nevede... s ocasem se nedomluvis