Szerző Téma: DrA Pickup  (Megtekintve 2920 alkalommal)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
DrA Pickup
« Dátum: 2011. április 12. - 16:05:56 »
+2 Show voters
\"drapickup.png\"
 
Hellosztok!
Szeretném bemutatni az újonnan készült függvénykönyvtáram, amely segítségével könnyen készíthettek fegyver, élet, páncél és pénz pickuppokat. A függvénykönyvtár mellé jut egy filterscript is mely segítségével könnyen készíthettek pickuppokat.
Készítési idõ: kb. 45 perc.
Tulajdonos: DrAkE (Én)
Kiadatási dátum: 2011. 04. 12.
Függvények:
 
  • CreateWeaponPickup(pickupid, wepid, ammo, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)

  • CreateHealthPickup(pickupid, health, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)

  • CreateArmourPickup(pickupid, armour, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)

  • CreateMoneyPickup(pickupid, money, Float:Xpos, Float:Ypos, Float:Zpos, interior=-1, virtual=-1, playerid=-1)


Parancsok:
 
  • /cwp [pickupid(1/2/3)] [fegyverid] [lõszer] [komment(nem szükséges)]

  • /chp [pickupid(1/2/3)] [élet] [komment(nem szükséges)]

  • /cap [pickupid(1/2/3)] [páncél] [komment(nem szükséges)]

  • /cmp [pickupid(1/2/3)] [pénz] [komment(nem szükséges)]


A parancsok segítségével készíthettek könnyedén pickuppokat melyeket egy fájlba ment! (Játékban nem hozza létre a pickuppokat!)
Pickup idkrõl:
 
  • 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).


Függvénykönyvtár:
 
/*
*            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ó :D
* 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  100
enum 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ó:
CreateWeaponPickup
Paramé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
-*----------------------------------------------------------------------------*/
stock
CreateWeaponPickup(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ó:
CreateHealthPickup
Paramé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
-*----------------------------------------------------------------------------*/
stock
CreateHealthPickup(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ó:
CreateArmourPickup
Paramé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
-*----------------------------------------------------------------------------*/
stock
CreateArmourPickup(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ó:
CreateMoneyPickup
Paramé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
-*----------------------------------------------------------------------------*/
stock
CreateMoneyPickup(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;
}

 
Segéd script:
 
#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 0xFFFFFFFF
new 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;
}

 
Vagy ha valamelyikõtök lusta lenne lentebb megtalálhatjátok a letöltõ linket! (Pluginnal, függvénykönyvtárakkal és a scriptel együtt!)
Letöltés:
http://solidfiles.com/d/f05c7/
U.I.: Ha van még ötletetek mit rakhatnék bele nyugodtan írjátok ide!
« Utoljára szerkesztve: 2011. november 13. - 09:26:07 írta Jethro »

Nem elérhető .:Secur:.

  • 2430
  • GTA Hero
    • Profil megtekintése
DrA Pickup
« Válasz #1 Dátum: 2011. április 12. - 16:08:04 »
0 Show voters
Hi!
Nagyon tetszik  ;)
Jó lett.

DrA Pickup
« Válasz #2 Dátum: 2011. április 12. - 16:12:51 »
0 Show voters
Gratulálok hozzá ,nekem nagyon tetszik.Am DaraDevil-nek is pont jól jött szerintem ;)

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
DrA Pickup
« Válasz #3 Dátum: 2011. április 12. - 16:13:56 »
0 Show voters
Majd készítek ennek segítségével fegyver droppot! :D

DrA Pickup
« Válasz #4 Dátum: 2011. április 12. - 18:32:53 »
0 Show voters
Hogy valaki folytassa az építõ jellegû kritikát az oldalon.
Amúgy szép munka bár én nem fogom használni.  :D
 

new FegyverObject[][] = {
        {0},// Ököl
        {331},// Boxer
        {333},// Golf Ütõ

 
Miért multidimenziós ez a változó?
Code optimisations
 
    Excess dimensions
I 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. :D

Nem elérhető DrAkE

  • 2078
    • Profil megtekintése
DrA Pickup
« Válasz #5 Dátum: 2011. április 12. - 18:47:32 »
0 Show voters
Javítva! Köszönöm megfigyelésedet!

Nem elérhető Bart

  • 4111
    • Profil megtekintése
DrA Pickup
« Válasz #6 Dátum: 2011. április 15. - 16:01:07 »
0 Show voters
Nagyon jó lett, Grat!
 
Idézetet írta: DrAkE date=1302617636\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"7502\" data-ipsquote-contentclass=\"forums_Topic
Majd készítek ennek segítségével fegyver droppot! :D
 
Már várom! :D

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal