Balkan SA:MP

PAWN skriptanje, gamemodovi, filterskripte, include fajlovi, mape, pluginovi => Razgovor u vezi PAWN - skriptanja => Temu započeo: 032.Marcus poslato Februar 07, 2014, 18:46:15 POSLE PODNE

Naslov: [POMOC] Interier problem
Poruka od: 032.Marcus poslato Februar 07, 2014, 18:46:15 POSLE PODNE
Scripta: Moja od 0
Problem: Kada napravim kucu/biznis, i stavim interier 1, onda kad udjem sve se vidi lepo, stavim interier 2, ne vidi se nista sve crno. Takodje, ne napravi mi pickup na lokaciji mojoj
Deo scripte:
EDIT: Sredio sam pickup, imam problem sada kada ugasim server i upalim, ne sacuva da sam kupio firmu/kucu.... Pomagajte molim vas, da zavrsim vise sa ovim.

YCMD:napravikucu(playerid, params[], help)
{
#pragma unused help
    if(!IsPlayerAdmin(playerid)) return SCM(playerid, -1, "GoMilano: Niste ovlasceni da koristite ovu komandu");

    new price, id, Int, VW, InInt;
    if(sscanf(params, "ii", price, InInt)) return SendClientMessage(playerid, -1, "Server: /napravikucu [cena] [interior]");

    //if(type < 0 || type > 4) return SendClientMessage(playerid, -1, "Server: Ne ispod 0 ne vise od 10");//

    if(price < 10000) return SendClientMessage(playerid, -1, "bla bla $");

    for(new h = 1;h < sizeof(HouseInfo);h++)
    {
        if(HouseInfo[h][hPrice] == 0)
        {
            id = h;
            break;
        }
    }
    switch(InInt)
    {
        case 0:
{
        HouseInfo[id][hInInt] = 1;
HouseInfo[id][hExitX] = 222.98751831055;
    HouseInfo[id][hExitY] = 1287.8483886719;
    HouseInfo[id][hExitZ] = 1082.140625;
}
case 1:
{
    HouseInfo[id][hInInt] = 1;
HouseInfo[id][hExitX] = 222.98751831055;
    HouseInfo[id][hExitY] = 1287.8483886719;
    HouseInfo[id][hExitZ] = 1082.140625;
}
case 2:
{
    HouseInfo[id][hInInt] = 2;
    HouseInfo[id][hExitX] = 260.98806762695;
    HouseInfo[id][hExitY] = 1284.8311767578;
    HouseInfo[id][hExitZ] = 1080.2578125;
}
}
    new Float:X,Float:Y,Float:Z,Float:A;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    Int = GetPlayerInterior(playerid);
    VW = GetPlayerVirtualWorld(playerid);

    HouseInfo[id][hOwned] = 0;
    HouseInfo[id][hPrice] = price;
    HouseInfo[id][hEnterX] = X;
    HouseInfo[id][hEnterY] = Y;
    HouseInfo[id][hEnterZ] = Z;
    HouseInfo[id][hEnterA] = A;
    HouseInfo[id][hLocked] = 1;

    HouseInfo[id][hInt] = Int;
    HouseInfo[id][hVW] = VW;
    HouseInfo[id][hInVW] = id;

    if(HouseInfo[id][hIcon]) DestroyPickup(HouseInfo[id][hIcon]);
    HouseInfo[id][hIcon] = CreatePickup(1272, 1, HouseInfo[id][hEnterX], HouseInfo[id][hEnterY], HouseInfo[id][hEnterZ], HouseInfo[id][hInVW]);
SaveHouse(id);
    return 1;
}



A evo i za ulazak:
YCMD:enter(playerid, params[], help)
{
    #pragma unused help
    for(new b = 1; b < sizeof(BusinessInfo); b++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, BusinessInfo[b][bEnterX], BusinessInfo[b][bEnterY], BusinessInfo[b][bEnterZ]))
        {
            if(BusinessInfo[b][bLocked] == 1) return SendClientMessage(playerid, -1, "Ova firma je zakljucana");
            SetPlayerPos(playerid, BusinessInfo[b][bExitX], BusinessInfo[b][bExitY], BusinessInfo[b][bExitZ]);
            SetPlayerFacingAngle(playerid, BusinessInfo[b][bExitA]);
            SetPlayerInterior(playerid, BusinessInfo[b][bInInt]);
            SetPlayerVirtualWorld(playerid, BusinessInfo[b][bInVW]);
            InBusiness[playerid] = b;
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, BusinessInfo[b][bExitX], BusinessInfo[b][bExitY], BusinessInfo[b][bExitZ]) && GetPlayerVirtualWorld(playerid) == BusinessInfo[b][bInVW])
        {
            SetPlayerPos(playerid, BusinessInfo[b][bEnterX], BusinessInfo[b][bEnterY], BusinessInfo[b][bEnterZ]);
            SetPlayerFacingAngle(playerid, BusinessInfo[b][bEnterA]);
            SetPlayerInterior(playerid, BusinessInfo[b][bInt]);
            SetPlayerVirtualWorld(playerid, BusinessInfo[b][bVW]);
            InBusiness[playerid] = 0;
            return 1;
        }
    }
   
    for(new b = 1; b < sizeof(HouseInfo); b++)
    {
        if(IsPlayerInRangeOfPoint(playerid, 1.0, HouseInfo[b][hEnterX], HouseInfo[b][hEnterY], HouseInfo[b][hEnterZ]))
        {
            if(BusinessInfo[b][bLocked] == 1) return SendClientMessage(playerid, -1, "Ova firma je zakljucana");
            SetPlayerPos(playerid, HouseInfo[b][hExitX], HouseInfo[b][hExitY], HouseInfo[b][hExitZ]);
            SetPlayerFacingAngle(playerid, HouseInfo[b][hExitA]);
            SetPlayerInterior(playerid, HouseInfo[b][hInInt]);
            SetPlayerVirtualWorld(playerid, HouseInfo[b][hInVW]);
            InHouse[playerid] = b;
            return 1;
        }
        if(IsPlayerInRangeOfPoint(playerid, 2.0, HouseInfo[b][hExitX], HouseInfo[b][hExitY], HouseInfo[b][hExitZ]) && GetPlayerVirtualWorld(playerid) == HouseInfo[b][hInVW])
        {
            SetPlayerPos(playerid, HouseInfo[b][hEnterX], HouseInfo[b][hEnterY], HouseInfo[b][hEnterZ]);
            SetPlayerFacingAngle(playerid, HouseInfo[b][hEnterA]);
            SetPlayerInterior(playerid, HouseInfo[b][hInt]);
            SetPlayerVirtualWorld(playerid, HouseInfo[b][hVW]);
            InHouse[playerid] = 0;
            return 1;
        }
    }
    return 1;
}


OnGameModeExit
public OnGameModeExit()
{
for(new id = 1; id < sizeof(BusinessInfo); id++)
    {
        if(BusinessInfo[id][bPrice] == 0) break;
        SaveBizz(id);
    }
   
    for(new id = 1; id < sizeof(HouseInfo); id++)
    {
        if(HouseInfo[id][hPrice] == 0) break;
        SaveHouse(id);
    }
return 1;
}
Naslov: Odg: [POMOC] Interier problem
Poruka od: 032.Marcus poslato Februar 08, 2014, 09:47:34 PRE PODNE
Bump. Neko pomoc, molim vas, hitno je.
Naslov: Odg: [POMOC] Interier problem
Poruka od: Ermin. poslato Februar 08, 2014, 11:41:03 PRE PODNE
Da li si siguran da su tacne ko-ordinate i da su za pravi interior ?
Provjeri sa setpos i setinterior..
Naslov: Odg: [POMOC] Interier problem
Poruka od: 032.Marcus poslato Februar 08, 2014, 14:32:57 POSLE PODNE
Aha, radi sad. Nego imam problem da kad ugasim server, ne sacuva mi to da je kupljena kuca ili biznis... Vec moram opet da kupim, kad upalim server?
Naslov: Odg: [POMOC] Interier problem
Poruka od: Ermin. poslato Februar 08, 2014, 14:35:16 POSLE PODNE
Ocito je problem do SaveHouse.
Daj nam kod
Naslov: Odg: [POMOC] Interier problem
Poruka od: 032.Marcus poslato Februar 08, 2014, 14:39:34 POSLE PODNE
forward SaveHouse(id);
public SaveHouse(id)
{
new hFile[40];
format(hFile, sizeof(hFile), HPATH, id);
new INI:File = INI_Open(hFile);
INI_SetTag(File, "data");
INI_WriteInt(File, "OwneD", HouseInfo[id][hOwner]);
INI_WriteInt(File, "Price", HouseInfo[id][hPrice]);
INI_WriteString(File, "Owner", HouseInfo[id][hOwner]);
INI_WriteInt(File, "Locked", HouseInfo[id][hLocked]);
INI_WriteFloat(File, "EnterX", HouseInfo[id][hEnterX]);
INI_WriteFloat(File, "EnterY", HouseInfo[id][hEnterY]);
INI_WriteFloat(File, "EnterZ", HouseInfo[id][hEnterZ]);
INI_WriteFloat(File, "EnterA", HouseInfo[id][hEnterA]);
INI_WriteFloat(File, "ExitX", HouseInfo[id][hExitX]);
INI_WriteFloat(File, "ExitY", HouseInfo[id][hExitY]);
INI_WriteFloat(File, "ExitZ", HouseInfo[id][hExitZ]);
INI_WriteFloat(File, "ExitA", HouseInfo[id][hExitA]);
INI_WriteInt(File, "Int", HouseInfo[id][hInt]);
INI_WriteInt(File, "VW", HouseInfo[id][hVW]);
INI_WriteInt(File, "InInt", HouseInfo[id][hInInt]);
INI_WriteInt(File, "InVW", HouseInfo[id][hInVW]);
INI_WriteInt(File, "ID", HouseInfo[id][hID]);
INI_Close(File);
return 1;
}


YCMD:kupikucu(playerid, params[], help)
{
#pragma unused help
    new id = IsPlayerBlizuUlazaKuce(playerid);

    if(id == -1 || id == 0) return SendClientMessage(playerid, -1, "Niste blizu firme");

    if(HouseInfo[id][hOwned] != 0 || HouseInfo[id][hPrice] == 0) return SendClientMessage(playerid, -1, "GoMilano: Ova kuca nije na prodaju.");

    if(PlayerInfo[playerid][pHouseID] != 0) return SendClientMessage(playerid, -1, "GoMilano: Vec imate kucu.");

    if(GetPlayerMoney(playerid) < HouseInfo[id][hPrice]) return SendClientMessage(playerid, -1, "GoMilano: Nemate dovoljno novca da kupite kucu.");

    PlayerInfo[playerid][pHouseID] = id;
    //PlayerInfo[playerid][hMoney] -= HouseInfo[id][hPrice];
    GivePlayerMoney(playerid, -HouseInfo[id][hPrice]);

    HouseInfo[id][hLocked] = 0;
    HouseInfo[id][hOwned] = 1;
    HouseInfo[id][hOwner] = RemoveUnderScore(playerid);
SaveHouse(id);
    SendClientMessage(playerid, -1, "Cestitamo, kupili ste FIRMU!");
    return 1;
}



EDIT: Resio sam, ako  sam dobro proverio. Greska je bila u
INI_WriteInt(File, "OwneD", HouseInfo[id][hOwner]); >> hOwned

Sacuva mi da imam kucu, i da je kuca kupljena, ali mi prikaze onaj 3dTextLabel da nije kupljena. Takodje, imam pitanje kako da namestim da cim napravim kucu i cim kupim, da se 3dTextLabel napravi/skloni. Gde treba da stavim umesto OnGameModeinit ? Ovo pisem da ne bih otvarao svaki cas temu...

public OnGameModeInit()
{
EnableStuntBonusForAll(0);
DisableInteriorEnterExits();

SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

new str[40];
    for(new idx = 1; idx < sizeof(BusinessInfo); idx++)
    {
        format(str, sizeof(str), BPATH, idx);
        INI_ParseFile(str, "SaveBusiness_%s", .bExtra = true, .extra = idx );
        BusinessInfo[idx][bIcon] = CreatePickup(1272, 1, BusinessInfo[idx][bEnterX], BusinessInfo[idx][bEnterY], BusinessInfo[idx][bEnterZ], BusinessInfo[idx][bVW]);
        BusinessInfo[idx][bExitIcon] = CreatePickup(1272, 1, BusinessInfo[idx][bExitX], BusinessInfo[idx][bExitY], BusinessInfo[idx][bExitZ], BusinessInfo[idx][bInVW]);
if(BusinessInfo[idx][bOwned] == 0)
{
    new str1[256];
    format(str1, sizeof(str1), ""ZELENA" Ovaj biznis nema vlasnika !\n Cena biznisa: %d \n Tip biznisa: %d \n Da kupite ovaj biznis \n kucajte /kupifirmu", BusinessInfo[idx][bPrice], BusinessInfo[idx][bType]);
    Create3DTextLabel(str1, -1, BusinessInfo[idx][bEnterX], BusinessInfo[idx][bEnterY], BusinessInfo[idx][bEnterZ], 20.0, BusinessInfo[idx][bVW]);
}
}

for(new idx = 1; idx < sizeof(HouseInfo); idx++)
    {
        format(str, sizeof(str), HPATH, idx);
        INI_ParseFile(str, "SaveHouse_%s", .bExtra = true, .extra = idx );
        HouseInfo[idx][hIcon] = CreatePickup(1272, 1, HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ], HouseInfo[idx][hVW]);
if(HouseInfo[idx][hOwned] == 0)
{
    new str1[256];
    format(str1, sizeof(str1), ""ZELENA" Ova kuca nema vlasnika !\n Cena kuce: %d \n Da kupite ovu kucu \n kucajte /kupikucu", HouseInfo[idx][hPrice]);
    Create3DTextLabel(str1, -1, HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ], 20.0, HouseInfo[idx][hVW]);
}
}
return 1;
}
Naslov: Odg: [POMOC] Interier problem
Poruka od: Ermin. poslato Februar 08, 2014, 15:31:13 POSLE PODNE
Evo ti primjer:

new Text3D:houselabelArray[MAX_KUCA];

houselabelArray[idx] = CreateLabel(...);

Update3DTextLabel(houselabelArray[indeks], ...);

Naslov: Odg: [POMOC] Interier problem
Poruka od: 032.Marcus poslato Februar 08, 2014, 16:09:12 POSLE PODNE
Izvini ako sam dosadan, mozes mi reci samo da li stavljam sve ovo u OnGameModeInit tj, stavim u OnGameModeInit ono Create3dText label, a kad izvrsim komandu idem Update3dText label i izaberem taj ?

EDIT: Uspeo sam, ako neko moze nek vidi ono za Whirlpool, ovde moze lock.