/** DrA Pickup 1.0.1* Minden jog fenttartva! © By: DrAkE** Tulajdonos : DrAkE* Idõ : 2011.04.12** A függvény szabadon terjeszthetõ.* És természetesen szabadon használható * Köszönet:* Y_Less - sscanf2* DracoBlue - dcmd* Incognito - streamer** Külön köszönet:* Thiadmer - PAWN.* SA:MP Csapat múlt, jelen, jövõ - SA:MP.*** Funkciók:* CreateWeaponPickup - Fegyver pickup készítése.* CreateHealthPickup - Élet pickup készítése.* CreateArmourPickup - Páncél pickup készítése.* CreateMoneyPickup - Pénz pickup készítése*//*native CreateWeaponPickup(pickupid, wepid, ammo, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1);native CreateHealthPickup(pickupid, health, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)native CreateArmourPickup(pickupid, armour, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)native CreateMoneyPickup(pickupid, money, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)*/#include <streamer>#define MAXPICKUPS 100enum Fegyver{pickup,modell,loszer,Float:X,Float:Y,Float:Z}new EletInfo[MAXPICKUPS][2];new PancelInfo[MAXPICKUPS][2];new PenzInfo[MAXPICKUPS][2];new FegyverInfo[MAXPICKUPS][Fegyver];new FegyverObject[] = { 0, // Ököl 331, // Boxer 333, // Golf Ütõ 334, // Nitestick 335, // Kés 336, // Bézbóz ütõ 337, // Ásó 338, // Biliárd ütõ 339, // Catana 341, // Fûrész 321, // Lila Dildo 322, // Rövid Fehér Dildo 323, // Hosszú Fehér Dildo 324, // Vibrátor 325, // Virágok 326, // Cane 342, // Gránát 343, // Könny Gáz 344, // Molotov 0, 0, 0, 346, // Glock 347, // Hangtompítós Colt 348, // Desert Eagle 349, // Shotgun 350, // Sawn Off 351, // Combat Shotgun 352, // Micro UZI 353, // MP5 355, // AK47 356, // M4 372, // Tec9 357, // Rifle 358, // Távcsöves 359, // Rakéta Vetõ 360, // Hõ Követõ Rakéta Indító 361, // Lángszóró 362, // Minigun 363, // Detonátor táska 364, // Detonátor Gomb 365, // Spray 366, // Fire Extinguisher 367, // Fényképezõ 368, // Éjjellátó 368, // Infra szemüveg 371 // Ejtõernyõ};/*----------------------------------------------------------------------------*-Funkció:CreateWeaponPickupParaméterei:pickupid - A pickup típusa (1 - Felvehetõ, néhány perc elteltével újra respawnol, 2 - Felvehetõ, halál után respawnol, 3 - Spawn után, néhány perc elteltével eltûnik (fegyver dropphoz tökéletes).wepid - A fegyver idje.ammo - A fegyver lõszer mennyisége.Xpos - A pickup X helyzete.Ypos - A pickup Y helyzete.Zpos - A pickup Z helyzete.interior - Melyik interiorba szeretnéd létrehozni (elhagyható paraméter).virtual - Melyik virtuális világba szeretnéd létrehozni (elhagyható paraméter).Visszatérése: Nincs-*----------------------------------------------------------------------------*/stockCreateWeaponPickup(pickupid, wepid, ammo, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1){if(wepid >= 0){ if(ammo >= 0) { new fegyver; for(new a = 0; a < MAXPICKUPS; a++) { if(FegyverInfo[a][X] == 0.0) { fegyver = a; break; } } if(fegyver > MAXPICKUPS) return print(\"HIBA: Növelld a pickup limit számát (MAXPICKUPS)\"); else{ if(pickupid) pickupid = 2; else if(!pickupid) pickupid = 3; else if(pickupid == 3) pickupid = 4; FegyverInfo[fegyver][modell] = wepid; FegyverInfo[fegyver][loszer] = ammo; FegyverInfo[fegyver][X] = Xpos; FegyverInfo[fegyver][Y] = Ypos; FegyverInfo[fegyver][Z] = Zpos; FegyverInfo[fegyver][pickup] = CreateDynamicPickup(FegyverObject[FegyverInfo[fegyver][modell]], pickupid, FegyverInfo[fegyver][X], FegyverInfo[fegyver][Y], FegyverInfo[fegyver][Z], virtual, interior, playerid); return fegyver; }}else print(\"HIBA: A lõszer értéke nem lehet egyenlõ a nullával (0)!\");}else print(\"HIBA: A fegyverid értéke nem lehet egyenlõ a nullával (0)!\");return 0;}/*----------------------------------------------------------------------------*-Funkció:CreateHealthPickupParaméterei:pickupid - A pickup típusa (1 - Felvehetõ, néhány perc elteltével újra respawnol, 2 - Felvehetõ, halál után respawnol, 3 - Spawn után, néhány perc elteltével eltûnik (fegyver dropphoz tökéletes).health - A pickup mennyi életet adjon a felvevõnek.Xpos - A pickup X helyzete.Ypos - A pickup Y helyzete.Zpos - A pickup Z helyzete.interior - Melyik interiorba szeretnéd létrehozni (elhagyható paraméter).virtual - Melyik virtuális világba szeretnéd létrehozni (elhagyható paraméter).Visszatérése: Nincs-*----------------------------------------------------------------------------*/stockCreateHealthPickup(pickupid, health, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1){if(health != 0){new elet; for(new a = 0; a < MAXPICKUPS; a++) { if(EletInfo[a][0] == 0) { elet = a; break; }}if(elet > MAXPICKUPS) return print(\"HIBA: Növelld a pickup limit számát (MAXPICKUPS)\");else{ if(pickupid) pickupid = 2; else if(!pickupid) pickupid = 3; else if(pickupid == 3) pickupid = 4; EletInfo[elet][0] = health; EletInfo[elet][1] = CreateDynamicPickup(1240, pickupid, Xpos, Ypos, Zpos, virtual, interior, playerid); return elet;}}else print(\"HIBA: Az élet értéke nem lehet egyenlõ nullával (0)!\");return 0;}/*----------------------------------------------------------------------------*-Funkció:CreateArmourPickupParaméterei:pickupid - A pickup típusa (1 - Felvehetõ, néhány perc elteltével újra respawnol, 2 - Felvehetõ, halál után respawnol, 3 - Spawn után, néhány perc elteltével eltûnik (fegyver dropphoz tökéletes).armour - A pickup mennyi páncélt adjon a felvevõnek.Xpos - A pickup X helyzete.Ypos - A pickup Y helyzete.Zpos - A pickup Z helyzete.interior - Melyik interiorba szeretnéd létrehozni (elhagyható paraméter).virtual - Melyik virtuális világba szeretnéd létrehozni (elhagyható paraméter).Visszatérése: Nincs-*----------------------------------------------------------------------------*/stockCreateArmourPickup(pickupid, armour, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1){if(armour != 0){new pancel; for(new a = 0; a < MAXPICKUPS; a++) { if(PancelInfo[a][0] == 0) { pancel = a; break; }}if(pancel > MAXPICKUPS) return print(\"HIBA: Növelld a pickup limit számát (MAXPICKUPS)\");else{ if(pickupid) pickupid = 2; else if(!pickupid) pickupid = 3; else if(pickupid == 3) pickupid = 4; PancelInfo[pancel][0] = armour; PancelInfo[pancel][1] = CreateDynamicPickup(373, pickupid, Xpos, Ypos, Zpos, virtual, interior, playerid); return pancel;}}else print(\"HIBA: A páncél értéke nem lehet egyenlõ nullával (0)!\");return 0;}/*----------------------------------------------------------------------------*-Funkció:CreateMoneyPickupParaméterei:pickupid - A pickup típusa (1 - Felvehetõ, néhány perc elteltével újra respawnol, 2 - Felvehetõ, halál után respawnol, 3 - Spawn után, néhány perc elteltével eltûnik (fegyver dropphoz tökéletes).money - A pickup mennyi pénzt adjon a felvevõnek.Xpos - A pickup X helyzete.Ypos - A pickup Y helyzete.Zpos - A pickup Z helyzete.interior - Melyik interiorba szeretnéd létrehozni (elhagyható paraméter).virtual - Melyik virtuális világba szeretnéd létrehozni (elhagyható paraméter).Visszatérése: Nincs-*----------------------------------------------------------------------------*/stockCreateMoneyPickup(pickupid, money, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1){if(money != 0){new penz; for(new a = 0; a < MAXPICKUPS; a++) { if(PenzInfo[a][0] == 0) { penz = a; break; }}if(penz > MAXPICKUPS) return print(\"HIBA: Növelld a pickup limit számát (MAXPICKUPS)\");else{ if(pickupid) pickupid = 2; else if(!pickupid) pickupid = 3; else if(pickupid == 3) pickupid = 4; PenzInfo[penz][0] = money; PenzInfo[penz][1] = CreateDynamicPickup(1212, pickupid, Xpos, Ypos, Zpos, virtual, interior, playerid); return penz;}}else print(\"HIBA: A pénz értéke nem lehet egyenlõ nullával (0)!\");return 0;}public OnPlayerPickUpDynamicPickup(playerid, pickupid){for(new i = 0; i < MAXPICKUPS; i++){if(pickupid == FegyverInfo[pickup]){ GivePlayerWeapon(playerid, FegyverInfo[modell], FegyverInfo[loszer]); break;}else if(pickupid == EletInfo[1]){ new Float:health; GetPlayerHealth(playerid, health); SetPlayerHealth(playerid, (health+EletInfo[0])); break;}else if(pickupid == PancelInfo[1]){ new Float:armour; GetPlayerArmour(playerid, armour); SetPlayerArmour(playerid, (armour+PancelInfo[0])); break;}else if(pickupid == PenzInfo[1]){ GivePlayerMoney(playerid, PenzInfo[0]); break;}}return 1;}
#include <a_samp>#include <sscanf2>#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, \"\")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1#define COLOR_WHITE 0xFFFFFFFFnew string[256];public OnFilterScriptInit(){print(\"\\n--------------------------------------\");print(\" Pickup lerakó betöltve By DrAkE\");print(\"--------------------------------------\\n\");return 1;}public OnFilterScriptExit(){return 1;}dcmd_cwp(playerid, params[]){new Float:pos[3];new id, fegyverid, loszer, komment[128]; if(sscanf(params, \"dddS()\", id, fegyverid, loszer, komment)) return SendClientMessage(playerid, COLOR_WHITE, \"HASZNÁLAT: /cwp [pickupid(1/2/3)] [fegyverid] [lõszer] [komment jelzõ]\");else{GetPlayerPos(playerid, pos[0], pos[1], pos[2]);format(string, sizeof(string), \"CreateWeaponPickup(%d, %d, %d, %f, %f, %f, %d, %d);%s%s\\r\\n\", id, fegyverid, loszer, pos[0], pos[1], pos[2], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), komment[0] ? (\" // \") : (\"\"), komment);new File:fajl = fopen(\"savedposition.txt\", io_append);fwrite(fajl, string);fclose(fajl);SendClientMessage(playerid, COLOR_WHITE, \"SERVER: Pickup létrehozva!\");}return 1;}dcmd_chp(playerid, params[]){new Float:pos[3];new id, elet, komment[128]; if(sscanf(params, \"ddS()\", id, elet, komment)) return SendClientMessage(playerid, COLOR_WHITE, \"HASZNÁLAT: /chp [pickupid(1/2/3)] [élet] [komment jelzõ]\");else{GetPlayerPos(playerid, pos[0], pos[1], pos[2]);format(string, sizeof(string), \"CreateHealthPickup(%d, %d, %f, %f, %f, %d, %d);%s%s\\r\\n\", id, elet, pos[0], pos[1], pos[2], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), komment[0] ? (\" // \") : (\"\"), komment);new File:fajl = fopen(\"savedposition.txt\", io_append);fwrite(fajl, string);fclose(fajl);SendClientMessage(playerid, COLOR_WHITE, \"SERVER: Pickup létrehozva!\");}return 1;}dcmd_cap(playerid, params[]){new Float:pos[3];new id, pancel, komment[128]; if(sscanf(params, \"ddS()\", id, pancel, komment)) return SendClientMessage(playerid, COLOR_WHITE, \"HASZNÁLAT: /cap [pickupid(1/2/3)] [páncél] [komment jelzõ]\");else{GetPlayerPos(playerid, pos[0], pos[1], pos[2]);format(string, sizeof(string), \"CreateArmourPickup(%d, %d, %f, %f, %f, %d, %d);%s%s\\r\\n\", id, pancel, pos[0], pos[1], pos[2], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), komment[0] ? (\" // \") : (\"\"), komment);new File:fajl = fopen(\"savedposition.txt\", io_append);fwrite(fajl, string);fclose(fajl);SendClientMessage(playerid, COLOR_WHITE, \"SERVER: Pickup létrehozva!\");}return 1;}dcmd_cmp(playerid, params[]){new Float:pos[3];new id, penz, komment[128]; if(sscanf(params, \"ddS()\", id, penz, komment)) return SendClientMessage(playerid, COLOR_WHITE, \"HASZNÁLAT: /cmp [pickupid(1/2/3)] [pénz] [komment jelzõ]\");else{GetPlayerPos(playerid, pos[0], pos[1], pos[2]);format(string, sizeof(string), \"CreateMoneyPickup(%d, %d, %f, %f, %f, %d, %d);%s%s\\r\\n\", id, penz, pos[0], pos[1], pos[2], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid), komment[0] ? (\" // \") : (\"\"), komment);new File:fajl = fopen(\"savedposition.txt\", io_append);fwrite(fajl, string);fclose(fajl);SendClientMessage(playerid, COLOR_WHITE, \"SERVER: Pickup létrehozva!\");}return 1;}public OnPlayerCommandText(playerid, cmdtext[]){dcmd(cwp, 3, cmdtext);dcmd(chp, 3, cmdtext);dcmd(cap, 3, cmdtext);dcmd(cmp, 3, cmdtext);return 0;}
new FegyverObject[][] = { {0},// Ököl {331},// Boxer {333},// Golf Ütõ
Excess dimensionsI don\'t know why people do this, I\'m pretty sure they copy it from one of the more common modes, but that doesn\'t make it right and I don\'t know why it was done this way in the first place. If you have an array of values, don\'t waste dimensions. Example:I have an array of 10 values, let\'s for the sake of argument call them weapon prices. So we have 10 weapons, each with a price, and we want to store them in an array. Each weapon has an ID, from 0 to 9, so to get that weapon\'s price you need to access that index in the array: new gPrices[10] = // 10 weapons, thus 10 prices { 1000, 2000, 5000, 2000, 10000, 500, 3000, 2000, 100, 750 }; new weaponPrice = gPrices[5]; That\'s all you need - it\'s BASIC array access, and yet for some reason people insist on doing the following: new gPrices[10][1] = // 10 weapons, thus 10 prices { {1000}, {2000}, {5000}, {2000}, {10000}, {500}, {3000}, {2000}, {100}, {750} };new weaponPrice = gPrices[5][0]; What purpose does the extra dimension serve? None at all! If you had two prices per weapon then yes - you would need the extra dimension, but you don\'t so you don\'t - just don\'t do it, simple as! It\'s a waste of time - it\'s slower and a waste of space - it\'s bigger.[/quote] print(\"HIBA: A fegyverid és a lõszer értéke nem lehet egyenlõ a nullával (0)!\");[/quote]Ez az üzenet helyett miért nem vizsgálod meg inkább hogy a wepid és ammo kisebb-e mint 1 és ha igen akkor meg beállítod 1-re vagy amire akarod, ez vonatkozik a többire is.Ahogy most van vizsgálva csak 0 nem lehet mi van ha negatív értéket ír be valaki?És ezt csak mellékesen jegyzem meg #include <streamer> Ezt is felhasználja a függvénykönyvtár? Nem találtam hogy le lenne írva valahol,de mindent összevetve biztos jól jön valakinek, csak így tovább.
new gPrices[10] = // 10 weapons, thus 10 prices { 1000, 2000, 5000, 2000, 10000, 500, 3000, 2000, 100, 750 }; new weaponPrice = gPrices[5];
new gPrices[10][1] = // 10 weapons, thus 10 prices { {1000}, {2000}, {5000}, {2000}, {10000}, {500}, {3000}, {2000}, {100}, {750} };new weaponPrice = gPrices[5][0];
print(\"HIBA: A fegyverid és a lõszer értéke nem lehet egyenlõ a nullával (0)!\");[/quote]Ez az üzenet helyett miért nem vizsgálod meg inkább hogy a wepid és ammo kisebb-e mint 1 és ha igen akkor meg beállítod 1-re vagy amire akarod, ez vonatkozik a többire is.Ahogy most van vizsgálva csak 0 nem lehet mi van ha negatív értéket ír be valaki?És ezt csak mellékesen jegyzem meg #include <streamer> Ezt is felhasználja a függvénykönyvtár? Nem találtam hogy le lenne írva valahol,de mindent összevetve biztos jól jön valakinek, csak így tovább.
#include <streamer>
Majd készítek ennek segítségével fegyver droppot!