Szerző Téma: Fegyver tárolása a játékoson továbbfejlesztés  (Megtekintve 625 alkalommal)

Fegyver tárolása a játékoson továbbfejlesztés
« Dátum: 2014. május 07. - 08:34:20 »
0 Show voters
Sziasztok!
Hogyan lehetne ezt a sriptet úgy megoldani, hogy ne mindig csak egy fegyver legyen a játékoson, hanem annyi amennyi éppen nála van?
Mer így hogy ha váltogatom a fegyvereket mindig csak egyet tesz ki a játékosra a többi meg nem látszódik.
Elõre is köszönöm!
 
#include <a_samp>
#define WEAPON_TYPE_NONE        (0)
#define WEAPON_TYPE_HEAVY   (1)
#define WEAPON_TYPE_LIGHT   (2)
#define WEAPON_TYPE_MELEE   (3)//Nahkampf
new OldWeapon[MAX_PLAYERS];
new HoldingWeapon[MAX_PLAYERS];
 
#define SetPlayerHoldingObject(%1,%2,%3,%4,%5,%6,%7,%8,%9) SetPlayerAttachedObject(%1,MAX_PLAYER_ATTACHED_OBJECTS-1,%2,%3,%4,%5,%6,%7,%8,%9)
#define StopPlayerHoldingObject(%1) RemovePlayerAttachedObject(%1,MAX_PLAYER_ATTACHED_OBJECTS-1)
//------------------------------------------------------------------------------------------------------
public OnFilterScriptExit()
{
        for(new i=0;i<MAX_PLAYERS;i++)
            if(IsPlayerConnected(i))
                        StopPlayerHoldingObject(i);
        return 1;
}
public OnPlayerConnect(playerid)
{
        OldWeapon[playerid]=0;
        HoldingWeapon[playerid]=0;
        return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
        if(oldstate==PLAYER_STATE_ONFOOT)
        {
                StopPlayerHoldingObject(playerid);
                OldWeapon[playerid]=0;
                HoldingWeapon[playerid]=0;
        }
        return 1;
}
public OnPlayerUpdate(playerid)
{
        if(GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
        {
                new weaponid=GetPlayerWeapon(playerid),oldweapontype=GetWeaponType(OldWeapon[playerid]);
                new weapontype=GetWeaponType(weaponid);
                if(HoldingWeapon[playerid]==weaponid)
                    StopPlayerHoldingObject(playerid);
                if(OldWeapon[playerid]!=weaponid)
                {
                    new modelid=GetWeaponModel(OldWeapon[playerid]);
                    if(modelid!=0 && oldweapontype!=WEAPON_TYPE_NONE && oldweapontype!=weapontype)
                    {
                        HoldingWeapon[playerid]=OldWeapon[playerid];
                        switch(oldweapontype)
                        {
                            case WEAPON_TYPE_LIGHT:
                                                SetPlayerHoldingObject(playerid, modelid, 8,0.0,-0.1,0.15, -100.0, 0.0, 0.0);
                                        case WEAPON_TYPE_MELEE:
                                            SetPlayerHoldingObject(playerid, modelid, 7,0.0,0.0,-0.18, 100.0, 45.0, 0.0);
                                        case WEAPON_TYPE_HEAVY:
                                            SetPlayerHoldingObject(playerid, modelid, 1, 0.2,-0.125,-0.1,0.0,25.0,180.0);
                        }
                    }
                }
                if(oldweapontype!=weapontype)
                        OldWeapon[playerid]=weaponid;
        }
        return 1;
}
//------------------------------------------------------------------------------------------------------
GetWeaponType(weaponid)
{
        switch(weaponid)
        {
            case 22,23,24,26,28,32:
                return WEAPON_TYPE_LIGHT;
                case 3,4,16,17,18,39,10,11,12,13,14,40,41:
                    return WEAPON_TYPE_MELEE;
                case 2,5,6,7,8,9,25,27,29,30,31,33,34,35,36,37,38:
                    return WEAPON_TYPE_HEAVY;
        }
        return WEAPON_TYPE_NONE;
}
stock GetWeaponModel(weaponid)
{
        switch(weaponid)
        {
            case 1:
                return 331;
                case 2..8:
                    return weaponid+331;
        case 9:
                    return 341;
                case 10..15:
                        return weaponid+311;
                case 16..18:
                    return weaponid+326;
                case 22..29:
                    return weaponid+324;
                case 30,31:
                    return weaponid+325;
                case 32:
                    return 372;
                case 33..45:
                    return weaponid+324;
                case 46:
                    return 371;
        }
        return 0;
}

Fegyver tárolása a játékoson továbbfejlesztés
« Válasz #1 Dátum: 2014. május 14. - 11:10:11 »
0 Show voters
Hello!
Elvileg amit kitettél code-t az hibatlan , én úgy todom
Lehet a gamemododban van egy removeatachplayerobject , ami törli a csatolt \"fegyvert\",így csak egyet látsz!
Legegyszerûbb csinálsz egy üres szervert , beleteszel egy parancsot ami ad 3
fegyvert ad(GivePlayerWeapon(id;tolteny); Aztán tedd be a code-t az üres gamemode-ba , így letudod tesztelni :)!

Fegyver tárolása a játékoson továbbfejlesztés
« Válasz #2 Dátum: 2014. május 07. - 08:34:20 »
0 Show voters
Sziasztok!
Hogyan lehetne ezt a sriptet úgy megoldani, hogy ne mindig csak egy fegyver legyen a játékoson, hanem annyi amennyi éppen nála van?
Mer így hogy ha váltogatom a fegyvereket mindig csak egyet tesz ki a játékosra a többi meg nem látszódik.
Elõre is köszönöm!
 
#include <a_samp>
#define WEAPON_TYPE_NONE        (0)
#define WEAPON_TYPE_HEAVY   (1)
#define WEAPON_TYPE_LIGHT   (2)
#define WEAPON_TYPE_MELEE   (3)//Nahkampf
new OldWeapon[MAX_PLAYERS];
new HoldingWeapon[MAX_PLAYERS];
 
#define SetPlayerHoldingObject(%1,%2,%3,%4,%5,%6,%7,%8,%9) SetPlayerAttachedObject(%1,MAX_PLAYER_ATTACHED_OBJECTS-1,%2,%3,%4,%5,%6,%7,%8,%9)
#define StopPlayerHoldingObject(%1) RemovePlayerAttachedObject(%1,MAX_PLAYER_ATTACHED_OBJECTS-1)
//------------------------------------------------------------------------------------------------------
public OnFilterScriptExit()
{
        for(new i=0;i<MAX_PLAYERS;i++)
            if(IsPlayerConnected(i))
                        StopPlayerHoldingObject(i);
        return 1;
}
public OnPlayerConnect(playerid)
{
        OldWeapon[playerid]=0;
        HoldingWeapon[playerid]=0;
        return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
        if(oldstate==PLAYER_STATE_ONFOOT)
        {
                StopPlayerHoldingObject(playerid);
                OldWeapon[playerid]=0;
                HoldingWeapon[playerid]=0;
        }
        return 1;
}
public OnPlayerUpdate(playerid)
{
        if(GetPlayerState(playerid)==PLAYER_STATE_ONFOOT)
        {
                new weaponid=GetPlayerWeapon(playerid),oldweapontype=GetWeaponType(OldWeapon[playerid]);
                new weapontype=GetWeaponType(weaponid);
                if(HoldingWeapon[playerid]==weaponid)
                    StopPlayerHoldingObject(playerid);
                if(OldWeapon[playerid]!=weaponid)
                {
                    new modelid=GetWeaponModel(OldWeapon[playerid]);
                    if(modelid!=0 && oldweapontype!=WEAPON_TYPE_NONE && oldweapontype!=weapontype)
                    {
                        HoldingWeapon[playerid]=OldWeapon[playerid];
                        switch(oldweapontype)
                        {
                            case WEAPON_TYPE_LIGHT:
                                                SetPlayerHoldingObject(playerid, modelid, 8,0.0,-0.1,0.15, -100.0, 0.0, 0.0);
                                        case WEAPON_TYPE_MELEE:
                                            SetPlayerHoldingObject(playerid, modelid, 7,0.0,0.0,-0.18, 100.0, 45.0, 0.0);
                                        case WEAPON_TYPE_HEAVY:
                                            SetPlayerHoldingObject(playerid, modelid, 1, 0.2,-0.125,-0.1,0.0,25.0,180.0);
                        }
                    }
                }
                if(oldweapontype!=weapontype)
                        OldWeapon[playerid]=weaponid;
        }
        return 1;
}
//------------------------------------------------------------------------------------------------------
GetWeaponType(weaponid)
{
        switch(weaponid)
        {
            case 22,23,24,26,28,32:
                return WEAPON_TYPE_LIGHT;
                case 3,4,16,17,18,39,10,11,12,13,14,40,41:
                    return WEAPON_TYPE_MELEE;
                case 2,5,6,7,8,9,25,27,29,30,31,33,34,35,36,37,38:
                    return WEAPON_TYPE_HEAVY;
        }
        return WEAPON_TYPE_NONE;
}
stock GetWeaponModel(weaponid)
{
        switch(weaponid)
        {
            case 1:
                return 331;
                case 2..8:
                    return weaponid+331;
        case 9:
                    return 341;
                case 10..15:
                        return weaponid+311;
                case 16..18:
                    return weaponid+326;
                case 22..29:
                    return weaponid+324;
                case 30,31:
                    return weaponid+325;
                case 32:
                    return 372;
                case 33..45:
                    return weaponid+324;
                case 46:
                    return 371;
        }
        return 0;
}

Fegyver tárolása a játékoson továbbfejlesztés
« Válasz #3 Dátum: 2014. május 14. - 11:10:11 »
0 Show voters
Hello!
Elvileg amit kitettél code-t az hibatlan , én úgy todom
Lehet a gamemododban van egy removeatachplayerobject , ami törli a csatolt \"fegyvert\",így csak egyet látsz!
Legegyszerûbb csinálsz egy üres szervert , beleteszel egy parancsot ami ad 3
fegyvert ad(GivePlayerWeapon(id;tolteny); Aztán tedd be a code-t az üres gamemode-ba , így letudod tesztelni :)!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal