Jump to content

Twixo

Uživatel
  • Příspěvků

    120
  • Registrován

  • Aktivní

  • Vítězných dnů

    1

Příspěvky posted by Twixo

  1. Popis problému:

    Začal som pracovať s gang zónami, urobil som si jednoduchý príkaz na vytvorenie zóny, ešte to neuklada, len som si to chcel vysušať. No, problém je taký, že mi gang zonu neukáže na mape.

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    //horok
    
    new vytvaraniezony;
    new Float:zonax1,Float:zonay1,Float:zonaz1;
    new Float:zonax2,Float:zonay2,Float:zonaz2;
    new gangzone;
    new zoneid = -1;
    #define MAX_ZONE 200
    
    //príkaz
    
    CMD:createzone(playerid, params[])
    {
        if(!IsPlayerAdmin(playerid)) return 0;
        if(zoneid == MAX_ZONE-1) return SendClientMessage(playerid,-1,"Vyčerpalo sa miesto pre zóny");
        if(vytvaraniezony == 0)
        {
        GetPlayerPos(playerid, zonax1,zonay1,zonaz1);
        SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF}Teraz zadaj príkaz v opačnom rohu zóny");
        vytvaraniezony = 1;
        }
        else
        {
        GetPlayerPos(playerid, zonax2, zonay2, zonaz2);
        gangzone = GangZoneCreate(zonax1, zonay1, zonax1, zonay2); //hore mám zadefinovanú premennu a tu máme, že sa ta nová zona rovná tej premennej
        zoneid++;
        GangZoneShowForAll(gangzone,0xD50000FF); tu to chce GangZoneShowForAll( ZONA, farba);, takže farba je dobre a tu zonu sme definovali vyššie, takže neviem. Ak je chyba niekde inde, tak určite ocením upozornenie
        vytvaraniezony = 0;
        new string[128];
        format(string, sizeof(string), "Vytvoril si zónu ID:%i", zoneid);
        SendClientMessage(playerid, 0xFFFFFFFF,string);
        }
        return 1;
    }

     

     

     

    Dodatečné poznámky:

    --

  2. Pri odpojaní zrušíš (zabiješ) timer, potom keď sa pripojí, najlepšie keď sa spawne, tak spustíš timer a nastavíš textdraws.

     

    takže,

     

    nastavíš mu ten čas, kt. máš uložený, potom dáš funkciu, keď ten čas vo väzení je väčší než 0, tak mu spustí timer, ukáže TD a potom ho portne do väzenia.

    Rád by som ti dal nejaký pomocný kód, lenže ty to máš pomocou dini.inc čo som nikdy nepoužival.


    To posledné si nevšímaj, hneď ti sem niečo hodím na pomoc


    takže ten tvôj problém v tom, že ťa stále portuje a píše, že si si odpykal trest, tak tu máš riešenie
    public vazenie(playerid)
    {
        if(jail[playerid] > 0) // keď je menšie ako 0, čo je keď ti vyprší čas, tak keď bude 0, tak ťa portne a timer pokračuje, takže ide na -1, -2, -3 ... až neviem kam, takže, ak je čas rovný 0, tak to spravý a už ťa nebude portovať
        //takže nie if(jail[playerid] > 0), ale použi "=", že je rovný 0 ten čas if(jail[playerid] = 0)
    	{
    		 new string[128];
    		 format(string,sizeof(string),"%s",TimeConvert(jail[playerid]));
    		 jail[playerid] --;
    		 PlayerTextDrawSetString(playerid,VazenieTimer[playerid][0],string);
    	}
    	else
    	{
    		  SendClientMessage(playerid,COLOR_RED,"Odpykal si si trest");
    		  KillTimer(vazenietimer[playerid]);
    		  SetPlayerInterior(playerid,0);
    		  SetPlayerPos(playerid,1109.2490,-1796.0345,16.5938);
    		  PlayerTextDrawHide(playerid,VazenieTimer[playerid][0]);
    		  PlayerTextDrawHide(playerid,VazenieTimer[playerid][1]);
    	}
    	return 1;
    }
    	
    
    
    
  3. Popis problému:

    Zdravím,

     

    už pár dní mi láme hlavu ako zistiť ID vozdila, nemyslím ID modelu ale ID auta (/dl tak to ID napr. 3), ale tak, že nebudem v aute (takže GetPlayerVehicleID nebude fungovať, pretože nie som v aute). Skúšal som všeličo, stále nič a vôbec som nebol ani blízko, takže by som Vás chcel poprosiť o radu, ako zistiť ID vehiclu. A znovu zdvôrazňujem, že nepotrebujem zistit ID modelu, potrebujem ID. Potrebujem to iba na to aby, keď si spawner admin auto, tak ho hneď do neho hodí.

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    new vehid;
        if(sscanf(params, "i",vehid)) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF} /veh [ vehicleid ]");
        if(vehid < 400 || vehid > 611) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF} Použí id 400 - 611");
        new Float:x,Float:y,Float:z,Float:Angle;
        GetPlayerPos(playerid, x,y,z);
        GetPlayerFacingAngle(playerid,Angle);
        CreateVehicle(vehid,x,y,z,Angle,random(255),random(250),5,5);
        new svet = GetPlayerVirtualWorld(playerid);
        SetVehicleVirtualWorld(vehicleid, svet);  //Tie "vehicleid" som tam dal aby to nebolo prazdne
        PutPlayerInVehicle(playerid,vehicleid,0);

     

     

     

    Dodatečné poznámky:

    --

  4. Popis problému:

    Prvý krat som skúšal CPčka, tak som chcel spraviť nejakú ľahkú misiu aby som sa s CPčkami naučil. Nom, ak pôjdem do prvého CP, tak mi všetky zobere. Všetko máte v kóde napísane a chcel by som poďakovať rady ohladom CP. A znovu sa ospravedlnujem za otravovanie.

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    //hore
    
    new bool:naberadrogy[MAX_PLAYERS];
    new bool:vylozitdrogy[MAX_PLAYERS];
    new bool:schovavasa[MAX_PLAYERS];
    new madrogy[MAX_PLAYERS];
    
    //EnterCP
    
    public OnPlayerEnterCheckpoint(playerid)
    {
        if(naberadrogy[playerid])
        {
    	    madrogy[playerid] = 1;
    	    DisablePlayerCheckpoint(playerid);
    	    naberadrogy[playerid] = false;
    	    SetPlayerCheckpoint(playerid,-1092.3529,-1631.1917,76.3564,3);
    	    vylozitdrogy[playerid] = true;
            new nehladaneauto = CreateVehicle(495,-1108.8812,-1620.4327,76.7141,271.6356,95,49,5,0);
            SetVehicleVirtualWorld(nehladaneauto,GetPlayerVirtualWorld(playerid));
        }
        
        if(vylozitdrogy[playerid])
        {
        if(madrogy[playerid] == 0) return SendClientMessage(playerid,0xFF0000FF,"[ ! ] {FFFFFF}Nenaložil si drogy");
        DisablePlayerCheckpoint(playerid);
        vylozitdrogy[playerid] = false;
        madrogy[playerid] = 0;
        SetPlayerDrunkLevel(playerid,2);
        SetPlayerCheckpoint(playerid,-2107.8027,-2401.7397,31.7317,3);
        schovavasa[playerid] = true;
        SendClientMessage(playerid,0xFF0000FF,"[ ! ] {FFFFFF}Zober Sandking a schovaj sa v dedine!");
        }
        
        if(schovavasa[playerid])
        {
        DisablePlayerCheckpoint(playerid);
        schovavasa[playerid] = false;
        SetPlayerDrunkLevel(playerid,0);
        GivePlayerMoney(playerid,75000);
        SendClientMessage(playerid,0xFF0000FF,"[ ! ] {FFFFFF}Uspešne si splnil misiu a dostal si 75 000$");
        }
        return 1;
        }
    // Ak som to vždy končil returnom, tak mi to davalo error error 010: invalid function or declaration vždy do riadku kde bolo napr.  if(schovavasa[playerid]) 
    
    /*
     if(naberadrogy[playerid])
        {
    	    madrogy[playerid] = 1;
    	    DisablePlayerCheckpoint(playerid);
    	    naberadrogy[playerid] = false;
    	    SetPlayerCheckpoint(playerid,-1092.3529,-1631.1917,76.3564,3);
    	    vylozitdrogy[playerid] = true;
            new nehladaneauto = CreateVehicle(495,-1108.8812,-1620.4327,76.7141,271.6356,95,49,5,0);
            SetVehicleVirtualWorld(nehladaneauto,GetPlayerVirtualWorld(playerid));
        }
        return 1;
    }
    // a ak som v tomto riadku dal {, tak mi dalo error -> error 055: start of function body without function header
        if(vylozitdrogy[playerid])
    atd..., tak to mi davalo ten error
    *\
    
    //DialogResponse
        if(dialogid == 4)
        {
    	 if(response)
    	    {
    		    SetPlayerVirtualWorld(playerid,random(1000));
    		    new jobveh = CreateVehicle(478,1088.9076,-294.1150,73.9832,175.7813,29,57,5,0);
    		    SetVehicleVirtualWorld(jobveh,GetPlayerVirtualWorld(playerid));
    	        SetPlayerPos(playerid,1094.9294,-304.6245,73.9922);
    	        SetPlayerCheckpoint(playerid,1045.6129,-306.6344,73.9931,3.0);
    	        naberadrogy[playerid] = true;
            }
            }

     

     

     

    Dodatečné poznámky:

    --

  5. Popis problému:

    Zdravím,

     

     

    som si robil nejaké príkazy pre adminov, nech to nemusím robiť potom a dostal som sa na /nitro rádius a oprav rádius, oprav mi funguje úplne dobre ako chcem ale nitro ani náhodou. V kóde máte popis mojích chýb. Máte tam nitro, kt. mi vôbec nefunguje a oprav, kt. mi ide úplne pekne, oboje som robil úplne rovnakým štýlom iba som menil príkazy, ak to bolo nitro, tak pridalo komponent a keď to bol stav, tak opravilo a nastavilo stav...

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    CMD:nitro(playerid, params[])
    {
        new radius;
        new Float:x,Float:y,Float:z;
        new str[254];
        if(sscanf(params, "i", radius)) return SendClientMessage(playerid, 0xFF0000FF, "[ ! ] {FFFFFF} /nitro [ radius / -1 iba zadavajúcemu adminovi ]"); //vôbec nefunguje ten príkaz, dám napr. /nitro 100 a nikomu nič nepridá ani mne
        if(radius == -1) return AddVehicleComponent(playerid, 1010); // keď dám /nitro -1, tak mi napíše neznámy príkaz (unknown cmd)
        GetPlayerPos(playerid,x,y,z);
        for(new i;i[/spoiler][b]Dodatečné poznámky:[/b]--
  6. Ak hráč založí gang, tak mu šupne majtela, takže som skušal niečo s new GangOwner[MAX_PLAYERS], lenže pri 3Dtextu, kt. je pri pickupu gangu, tak mi nešlo nejak spraviť aby ukazalo meno majtela. Takže ako to zadefinovať, keď som šiel na to zle a ukázať správnu cestu

  7. Popis problému:

    Zdravím,

     

    ako ste si možno všímli, tak robím gangy. Stále sa trápim s majtelom (gangowner). Neviem ako ho dobre zadefinovať. Chcel by som žiadať skusenejších pawnerom o radu ako by som mal postupovať.

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    --

     

     

     

    Dodatečné poznámky:

    --

  8. Popis problému:

    Zdar,

    ospravedlnujem sa, že tu budem trochu dávať začiatočnícke veci, lenže po roku a pol som toho docela dosť zabudol.

    Chcel som si spraviť príkaz na spawn aut, lenže mám tam chybu. Ide o to,že neviem ako zapísať to, že premenná auto bude ta hodnotá čo pridám vedľa toho príkazu (príklad /veh ID, ID = hodnota). Viem, že to bolo nejak s podmienkou if, ale bol ešte k tomu nejaký include, myslím, že sscanf alebo ma opravte.

     

    // čitaj nejak ku koncuvi

    Ďakujem za pomoc, kt. mi poskytnete a ospravedlňujem sa za zbytočný spam a pre niekoho možno aj otravovanie. Len spawnu ako chápem, len tie veci si moc nepamätám, pretože prikaz som mal za 2minutky, lenže po pol hodine som stále nevedel čo mám robiť :d max som si spomenul na ten sscanf, len neviem či to je dobre.

     

    Chyby/varování kompilátoru a při běhu:

    Nemám chyby

     

    Kód:

     

    if (strcmp("/veh", cmdtext, true, 10) == 0)
        {
            new auto;
            new Float:x;
            new Float:y;
            new Float:z;
            GetPlayerPos(playerid, x, y, z);
            CreateVehicle(auto, x+10, y, z,1,random(255),random(255),5,0);
            return 1;
        }
    
    
    //btw. ako sa volá ten include vďaka ktorému môžem používať CMD: ?

     

     

     

    Dodatečné poznámky:

    --

  9. Popis problému:

    Zdar,

     

    ak mám podmienku if(atd...), tak ako za tým if spravím napr. dva a viac príkazov, ak to potrebujem?

     

    Všetko máte v kóde a dúfam, že chápete čo potrebujem ;)

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    if(zalozenygang1 == 1) return // a za tým return potrebujem dva príkazy ale neviem ako to spraviť, ak som mal
    
    //ak som mal if(zalozenygang1 == 1) return príkaz; druhý prikaz. tak za return mi ten prvý preskočilo, lebo podmienka if nebola ale ten druhý mi splnilo spolu s ďalšími čo boli pod if.

     

     

     

    Dodatečné poznámky:

    --

  10. Popis problému:

    Zdravím,

     

    celú noc som stravil nad vyriešením problému, že keď hráč vojde do pickupu, tak sa mu zobrazí dialog, lenže ten dialog sa mu stále otvára a nedokáže do toho dialogu nič napísať. Prosím o pomoc ako by sa to mohlo vyriešiť.

     

    Chyby/varování kompilátoru a při běhu:

    --

     

    Kód:

     

    --

     

     

     

    Dodatečné poznámky:

    --

  11. Ak som pochopil správne, nebude jednoduchšie, keď si uložíš pozíciu toho miesta úplne naľavo, a keďže majú byť "vedľa seba", tak proste pripočítaš/odpočítaš k X Y o nejakú hodnotu podľa potreby aby bola medzi nimi medzera.

     

    Napr.

    new
    	const Float:gRaceStart[3] = {X, Y, Z},
    	gRacersCount,
            gCurrentQueue
    	;
    
    //Keď sa pripojí na závod (spawneš ho)
    SetVehiclePos(jeho auto, gRaceStart[0] + (2.0 * gRacersCount), gRaceStart[1] + (1.5 * gCurrentQueue), gRaceStart[2]);
    gRacersCount++;
    if(!gRacersCount % 3)
    {
        gCurrentQueue++; //Keď sú traja vedľa seba, pripočítame aby sme vedeli, v ktorej sme rade.
        gRacersCount = 0; //Musíme vyresetovať, lebo inakšie by to nehádzalo spawn za prvé auto v rade pred
    }

    A potom, si môžeš pridať nejakú kontrolu, aby sa začali radiť za sebou, keď napr budú 3 vedľa seba. //Tak som ti ju tam hodil

     

    Celé si to však musíš prerobiť podľa potreby súradníc, pretože osi X, Y môže byť obrátene + možno musíš od osí odčitovať a nie pričitovať ako som to spravil (záleží ako máš orientovaný ten štart závodu).

    gCurrentQueue++; gCurrentQueue to je ako ten čo založil a ++ sú další dvaja čo sa pripojili? 

  12. Trošku jsem to poupravil, byla blbost volat TextDrawSetString/Show/Hide pokaždé v jinačím callbacku, udělalo ti to v tom bordel a určitě se ti to překrývalo. Možná tam bude nějaká chybka na to přijdeš až to vyzkoušíš...

     

     

    new Text:Odpocet0;
    new odpocet;
    new odpocitavani;
    
    forward OdpocetPublic(playerid);
    
    public OnGameModeInit()
    {
    	Odpocet0 = TextDrawCreate(305.000000, 121.000000, "60");
    	TextDrawBackgroundColor(Odpocet0, 255);
    	TextDrawFont(Odpocet0, 2);
    	TextDrawLetterSize(Odpocet0, 0.5, 2.2);
    	TextDrawColor(Odpocet0, -1728052993);
    	TextDrawSetOutline(Odpocet0, 1);
    	TextDrawSetProportional(Odpocet0, 1);
    	TextDrawSetSelectable(Odpocet0, 0);
    	return 1;
    }
    
    public OdpocetPublic(playerid)
    {
    	new string[3];
    	odpocet--;
    
    	format(string,sizeof(string),"%d",odpocet);
    	TextDrawHideForAll(Odpocet0);
    	TextDrawSetString(Odpocet0,string);
    	
    	if(odpocet >= 0) TextDrawShowForAll(Odpocet0);// 0 ještě zobrazí
    	else KillTimer(odpocitavani);//až bude -1 zastaví se
    	return 1;
    }
    
    dcmd_odpocet(playerid,params[])
    {
    	new hodnota;
    	if(sscanf(params,"d",hodnota)) return SendClientMessage(playerid,0xFFFFFFFF,"Použití: /odpocet [ HODNOTA ]");
    	if(hodnota>60||hodnota<1) return SendClientMessage(playerid,0xFFFFFFFF,"Rozmezí 1-60!");
    	if(odpocet != -1) return SendClientMessage(playerid,0xFFFFFFFF,"Jiný odpočet právě probíhá!");//-1 jedna je konečná, ušetřil jsem ti jednu zbytečnou proměnnou 
    
    	odpocet = hodnota + 1;//přičte jedničku, aby ti callback OdpocetPublic ukázal ještě to poslední číslo
    	odpocitavani = SetTimer("OdpocetPublic", 1000, true);
    	return 1;
    } 

     

     

    Máš to zle.

  13.   

     

     

    A k čemu tady zveřejňuješ topic, když skoro každou pomocí pohrdáš? Když si myslíš, že tak o tak zrozně umíš pawn lépe, kčemu tady ten topic zakládáš? Další copy, co nechceš, abychom viděli? Tady už bylo kódů a scriptů, že jediný, kdo ti to čorne jsou "pawneři" serverů, kam chodí 2 noví hráči za mésíc a ještě náhodou....

     

    yy mam topic na text draw problem a nie na prikaz. takže neviem čo riešiš. 

  14. public OnGameModeInit() 
    {
    Odpocet0 = TextDrawCreate(305.000000, 121.000000, "60");
    	TextDrawBackgroundColor(Odpocet0, 255);
    	TextDrawFont(Odpocet0, 2);
    	TextDrawLetterSize(Odpocet0, 0.500000, 2.200000);
    	TextDrawColor(Odpocet0, -1728052993);
    	TextDrawSetOutline(Odpocet0, 1);
    	TextDrawSetProportional(Odpocet0, 1);
    	TextDrawSetSelectable(Odpocet0, 0);
    	SetGameModeText("Blank Script");
    	AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
            return 1;
    }
    

    Ako fakt dk, neebudem ti asi písať cely Gamemodeinit :)

     

    Trošku jsem to poupravil, byla blbost volat TextDrawSetString/Show/Hide pokaždé v jinačím callbacku, udělalo ti to v tom bordel a určitě se ti to překrývalo. Možná tam bude nějaká chybka na to přijdeš až to vyzkoušíš...

     

     

    new Text:Odpocet0;
    new odpocet;
    new odpocitavani;
    
    forward OdpocetPublic(playerid);
    
    public OnGameModeInit()
    {
    	Odpocet0 = TextDrawCreate(305.000000, 121.000000, "60");
    	TextDrawBackgroundColor(Odpocet0, 255);
    	TextDrawFont(Odpocet0, 2);
    	TextDrawLetterSize(Odpocet0, 0.5, 2.2);
    	TextDrawColor(Odpocet0, -1728052993);
    	TextDrawSetOutline(Odpocet0, 1);
    	TextDrawSetProportional(Odpocet0, 1);
    	TextDrawSetSelectable(Odpocet0, 0);
    	return 1;
    }
    
    public OdpocetPublic(playerid)
    {
    	new string[3];
    	odpocet--;
    
    	format(string,sizeof(string),"%d",odpocet);
    	TextDrawHideForAll(Odpocet0);
    	TextDrawSetString(Odpocet0,string);
    	
    	if(odpocet >= 0) TextDrawShowForAll(Odpocet0);// 0 ještě zobrazí
    	else KillTimer(odpocitavani);//až bude -1 zastaví se
    	return 1;
    }
    
    dcmd_odpocet(playerid,params[])
    {
    	new hodnota;
    	if(sscanf(params,"d",hodnota)) return SendClientMessage(playerid,0xFFFFFFFF,"Použití: /odpocet [ HODNOTA ]");
    	if(hodnota>60||hodnota<1) return SendClientMessage(playerid,0xFFFFFFFF,"Rozmezí 1-60!");
    	if(odpocet != -1) return SendClientMessage(playerid,0xFFFFFFFF,"Jiný odpočet právě probíhá!");//-1 jedna je konečná, ušetřil jsem ti jednu zbytečnou proměnnou 
    
    	odpocet = hodnota + 1;//přičte jedničku, aby ti callback OdpocetPublic ukázal ještě to poslední číslo
    	odpocitavani = SetTimer("OdpocetPublic", 1000, true);
    	return 1;
    } 

     

     

    a toto nebude riešiť môj problem. Lebo nič si nerobil s text draw.

  15. Nazdar,


    Proste keď dam /odpočet, tak vše ide ale ten text draw neni tak ako som si ho spravil. Dá mi ho do lavého horného rohu a čierne. Ako opraviť túto chybu?


    ps: keď som ten odpočet dal do samostatného pwn, tak to šlo ako má


     


     


    //EDIT



    new Text:Odpocet0;
    new odpocet;
    new odpocitavani;
    new spusteno;
    new hodnota;

    forward OdpocetPublic(playerid);

    OnGameModeInit

    Odpocet0 = TextDrawCreate(305.000000, 121.000000, "60");
    TextDrawBackgroundColor(Odpocet0, 255);
    TextDrawFont(Odpocet0, 2);
    TextDrawLetterSize(Odpocet0, 0.500000, 2.200000);
    TextDrawColor(Odpocet0, -1728052993);
    TextDrawSetOutline(Odpocet0, 1);
    TextDrawSetProportional(Odpocet0, 1);
    TextDrawSetSelectable(Odpocet0, 0);
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);


    public OdpocetPublic(playerid)
    {
    odpocet--;
    new string[50];
    new str[50];
    format(string,sizeof(string),"%d",odpocet);
    if(odpocet==0)
    {
    format(str,sizeof(str),"0");
    TextDrawSetString(Odpocet0,str);
    KillTimer(odpocitavani);
    spusteno=0;
    TextDrawHideForAll(Odpocet0);
    }else TextDrawSetString(Odpocet0,string);
    return 1;
    }

    dcmd_odpocet(playerid,params[])
    {
    if(sscanf(params,"d",hodnota)) return SendClientMessage(playerid,0xFFFFFFFF,"Použití: /odpocet [ HODNOTA ]");
    if(hodnota>60||hodnota<1) return SendClientMessage(playerid,0xFFFFFFFF,"Rozmezí 1-60!");
    if(spusteno==1) return SendClientMessage(playerid,0xFFFFFFFF,"Jiný odpočet právě probíhá!");
    else
    {
    spusteno=1;
    TextDrawShowForAll(Odpocet0);
    odpocitavani=SetTimer("OdpocetPublic",1000,1);
    odpocet=hodnota;
    new string[50];
    format(string,sizeof(string),"%d",odpocet);
    TextDrawSetString(Odpocet0,string);
    }
    return 1;
    }
×
×
  • Create New...