Szerző Téma: Fegyyver Pickup-ok  (Megtekintve 1076 alkalommal)

Nem elérhető kos

  • 292
    • Profil megtekintése
Fegyyver Pickup-ok
« Dátum: 2017. Július 08. - 18:07:47 »
0
Üdv!
 
Készítettem egy kis egyszerű fegyverpickup létrehozót 
 
Ajánlott módosítás: lementés készítése, több fegyver berakása, más pickup id random berakása
 

/*
SA-MP   Fórum   Script   by   Kos
*/
#include <a_samp>
#include <zcmd>
#include <Streamer>
#define   feher   0xFFFFFFAA
#define   msg   SendClientMessage //lerövidítem a SendClientMessage funkciót
new cp[5],cpv[5],cpva[5],rand,GunID,GunAmmo;
new GunObjects[47] = {
-1,331,333,334,335,336,337,338,339,341,321,322,323,324,325,326,342,343,344,
-1,-1,-1,346,347,348,349,350,351,352,353,355,356,372,357,358,359,360,361,362,
363,364,365,366,367,368,368,371
};
public OnGameModeInit()
{
for(new i=0;i<5;i++){cp[i] = -1;} // értékek megadása a pickupoknak jelen esetben -1
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
for(new i=0;i<5;i++){ // elindítja a számolását a pickupoknak
   if(pickupid == cp[i]){ // pickup id megegyezik amibe bele mentünk
       GivePlayerWeapon(playerid,cpv[i],cpva[i]); //oda adja az értékeket
       cpv[i] = 0,cpva[i] = 0;
      DestroyPickup(cp[i]),cp[i]=-1; //töröljük a pickupot miután érzékelte h belementünk
   }
}
return 1;
}
CMD:kezd(playerid,params[])
{
    if(!IsPlayerAdmin(playerid)) return msg(playerid,feher,\"Nem vagy admin!\"); // adminnak kell lenni h lerakhassad
new Float:X[4],str[128];
GetPlayerPos(playerid,X[0],X[1],X[2]); // póz lekérése hogy hol van a karakter
for(new i=0; i<5; i++){
    if(cp[i] == -1){
        rand = random(2); // random érték 0-1
        switch(rand){ //randomon belül mit kapunk
         case 0:{GunID=30,GunAmmo = random(30-20)+20;}
         case 1:{GunID=29,GunAmmo = random(30-15)+15;}
      }
        cp[i] = CreatePickup(GunObjects[GunID],1,X[0]+2,X[1],X[2],-1);// értékek
        cpv[i] = GunID;
        cpva[i] = GunAmmo;
        format(str,sizeof(str),\"%i létrehozva\",i);
        msg(playerid,feher,str); //rövidítése a sendclientmessage-nek
        break; // hogy ne fusson le az összesen egyszerre, hanem mindig a legelőről számolt üresre adja be
    }
}
return 1;
}
CMD:torol(playerid,params[])
{
    if(!IsPlayerAdmin(playerid)) return msg(playerid,feher,\"Nem vagy admin!\");
new str[128];
    for(new i=0; i<5; i++){
    if(cp[i] != -1){
        DestroyPickup(cp[i]),cp[i]=-1;
        cpv[i] = 0;
        cpva[i] = 0;
        format(str,sizeof(str),\"%i törölve\",i);
        msg(playerid,feher,str);
        break;
    }
}
return 1;
}//törlés módot lehet modosítani h egyszerre az egészet akkor a break; funkciót vegyük ki. de lehet másképpen is

 
A scriptet én írtam :) rengeteg lehetőség van benne, főleg DM szervereken álja meg a helyét szerintem.
 
A script lényege, hogy létrehozunk vele pickup pontokat. /kezd
 
A pickup pontokat ki lehet törölni /töröl parancsal.
 
Ellenőrzésként, kiiratom a pickup ID-ket.
 
 
 
v2.0 Bátorkodtam fejleszteni
 
Fejlesztési idő: 5p
 

/*
SA-MP   Fórum   Script   by   Kos
*/
#include <a_samp>
#include <zcmd>
#include <Streamer>
#define   feher   0xFFFFFFAA
#define   msgall   SendClientMessageToAll
#define   msg   SendClientMessage
new cp[30],cpv[30],cpva[30],rand,GunID,GunAmmo,Float:x[30],Float:y[30],Float:z[30];
new GunObjects[47] = {
-1,331,333,334,335,336,337,338,339,341,321,322,323,324,325,326,342,343,344,
-1,-1,-1,346,347,348,349,350,351,352,353,355,356,372,357,358,359,360,361,362,
363,364,365,366,367,368,368,371
};
forward Talald();
forward Valtoz();
public OnGameModeInit()
{
for(new i=0;i<30;i++){cp[i] = -1;}
SetTimer(\"Talald\", 20000, true);
SetTimer(\"Valtoz\", 5000, true);
return 1;
}
                               
public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(!IsPlayerAdmin(playerid)){
   for(new i=0;i<30;i++){
      if(pickupid == cp[i]){
          GivePlayerWeapon(playerid,cpv[i],cpva[i]);
          cpv[i] = 0,cpva[i] = 0;
          /*x = 0, y = 0, z = 0; ez akkor kell, ha nem szeretnénk ha újra termelődne*/
         DestroyPickup(cp[i]),cp[i]=-1;
      }
   }
}
return 1;
}
public Talald()
{
new str[128];
    for(new i=0; i<30; i++){
        if(x[i] > 0 && y[i] > 0 && z[i] > 0){
       if(cp[i] == -1){
           rand = random(14);
           switch(rand){
            case 0:{GunID=16,GunAmmo = random(5-1)+1;}
            case 1:{GunID=17,GunAmmo = random(5-1)+1;}
            case 2:{GunID=18,GunAmmo = random(5-1)+1;}
            case 3:{GunID=23,GunAmmo = random(17-6)+6;}
            case 4:{GunID=24,GunAmmo = random(7-3)+3;}
            case 5:{GunID=25,GunAmmo = random(10-5)+5;}
            case 6:{GunID=27,GunAmmo = random(7-3)+3;}
            case 7:{GunID=29,GunAmmo = random(30-15)+15;}
            case 8:{GunID=30,GunAmmo = random(30-20)+20;}
            case 9:{GunID=31,GunAmmo = random(50-30)+30;}
            case 10:{GunID=33,GunAmmo = random(12-8)+8;}
            case 11:{GunID=34,GunAmmo = random(9-5)+5;}
            case 12:{GunID=41,GunAmmo = random(500-200)+200;}
            case 13:{GunID=42,GunAmmo = random(500-200)+200;}
         }
           cp[i] = CreatePickup(GunObjects[GunID],1,x[i]+2,y[i],z[i]-0.5,-1);
           cpv[i] = GunID;
           cpva[i] = GunAmmo;
           format(str,sizeof(str),\"%i PC-létrehozva %i ID-Fegyver %i GunAmmo\",i,GunID,GunAmmo);
           msgall(feher,str);
           break;
       }
    }
}
}
public Valtoz()
{
new str[128];
new i = random(30);
if(x[i] > 0 && y[i] > 0 && z[i] > 0){
   if(cp[i]){
       cpv[i] = 0,cpva[i] = 0;
      DestroyPickup(cp[i]),cp[i]=-1;
      if(cp[i] == -1){
           rand = random(14);
           switch(rand){
            case 0:{GunID=16,GunAmmo = random(5-1)+1;}
            case 1:{GunID=17,GunAmmo = random(5-1)+1;}
            case 2:{GunID=18,GunAmmo = random(5-1)+1;}
            case 3:{GunID=23,GunAmmo = random(17-6)+6;}
            case 4:{GunID=24,GunAmmo = random(7-3)+3;}
            case 5:{GunID=25,GunAmmo = random(10-5)+5;}
            case 6:{GunID=27,GunAmmo = random(7-3)+3;}
            case 7:{GunID=29,GunAmmo = random(30-15)+15;}
            case 8:{GunID=30,GunAmmo = random(30-20)+20;}
            case 9:{GunID=31,GunAmmo = random(50-30)+30;}
            case 10:{GunID=33,GunAmmo = random(12-8)+8;}
            case 11:{GunID=34,GunAmmo = random(9-5)+5;}
            case 12:{GunID=41,GunAmmo = random(500-200)+200;}
            case 13:{GunID=42,GunAmmo = random(500-200)+200;}
         }
           cp[i] = CreatePickup(GunObjects[GunID],1,x[i]+2,y[i],z[i]-0.5,-1);
           cpv[i] = GunID;
           cpva[i] = GunAmmo;
           format(str,sizeof(str),\"%i PC-létrehozva %i ID-Fegyver %i GunAmmo\",i,GunID,GunAmmo);
           msgall(feher,str);
       }
   }
}
}
CMD:kezd(playerid,params[])
{
    if(!IsPlayerAdmin(playerid)) return msg(playerid,feher,\"Nem vagy admin!\");
new Float:X[4],str[128];
GetPlayerPos(playerid,X[0],X[1],X[2]);
for(new i=0; i<30; i++){
    if(cp[i] == -1){
        rand = random(14);
        switch(rand){
         case 0:{GunID=16,GunAmmo = random(5-1)+1;}
         case 1:{GunID=17,GunAmmo = random(5-1)+1;}
         case 2:{GunID=18,GunAmmo = random(5-1)+1;}
         case 3:{GunID=23,GunAmmo = random(17-6)+6;}
         case 4:{GunID=24,GunAmmo = random(7-3)+3;}
         case 5:{GunID=25,GunAmmo = random(10-5)+5;}
         case 6:{GunID=27,GunAmmo = random(7-3)+3;}
         case 7:{GunID=29,GunAmmo = random(30-15)+15;}
         case 8:{GunID=30,GunAmmo = random(30-20)+20;}
         case 9:{GunID=31,GunAmmo = random(50-30)+30;}
         case 10:{GunID=33,GunAmmo = random(12-8)+8;}
         case 11:{GunID=34,GunAmmo = random(9-5)+5;}
         case 12:{GunID=41,GunAmmo = random(500-200)+200;}
         case 13:{GunID=42,GunAmmo = random(500-200)+200;}
      }
        cp[i] = CreatePickup(GunObjects[GunID],1,X[0]+2,X[1],X[2]-0.5,-1);
        x[i] = X[0], y[i] = X[1], z[i] = X[2];
        cpv[i] = GunID;
        cpva[i] = GunAmmo;
        format(str,sizeof(str),\"%i PC-létrehozva %i ID-Fegyver %i GunAmmo\",i,GunID,GunAmmo);
        msg(playerid,feher,str);
        break;
    }
}
return 1;
}
CMD:torol(playerid,params[])
{
    if(!IsPlayerAdmin(playerid)) return msg(playerid,feher,\"Nem vagy admin!\");
new str[128];
    for(new i=0; i<30; i++){
    if(cp[i] != -1){
        DestroyPickup(cp[i]),cp[i]=-1;
        cpv[i] = 0,cpva[i] = 0;
        x[i] = 0,y[i] = 0,z[i] = 0;
        format(str,sizeof(str),\"%i törölve\",i);
        msg(playerid,feher,str);
        break;
    }
}
return 1;
}

 
a bővítés benne:
 
- ha létrehozol x mennyiségű pickupot a /kezd paranccsal, akkor időnként egy random pickup megváltozik.
 
- ha felveszel pickupot, megjelenik a helyén egy másik pickup.
 
- talald timer 20s ha van létrehozott pickup és felvették már a pickupot( 20másodpercenként 1db slot feltöltődik (nem egszerre!)
 
- valtoz timer 5s ha van létrehozott pickup ( 5másodpercenként 1db random slot megváltozik (nem egyszerre!)
« Utoljára szerkesztve: 2017. Július 09. - 01:55:44 írta kos »

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Fegyyver Pickup-ok
« Válasz #1 Dátum: 2017. Július 11. - 14:04:03 »
0
lol xD

Nem elérhető D4N13L

  • 348
    • Profil megtekintése
Fegyyver Pickup-ok
« Válasz #2 Dátum: 2017. Augusztus 11. - 10:45:08 »
0
Eskü kipróbálom ezt! :D 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal