[POMOC] Interier problem


Započeo 032.Marcus, Februar 07, 2014, 18:46:15 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

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;
}
Poslednja Izmena: Februar 07, 2014, 19:20:48 POSLE PODNE od 032.Marcus

Bump. Neko pomoc, molim vas, hitno je.

Da li si siguran da su tacne ko-ordinate i da su za pravi interior ?
Provjeri sa setpos i setinterior..

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?


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;
}
Poslednja Izmena: Februar 08, 2014, 15:09:46 POSLE PODNE od 032.Marcus

Evo ti primjer:

new Text3D:houselabelArray[MAX_KUCA];

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

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

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.
Poslednja Izmena: Februar 08, 2014, 16:22:33 POSLE PODNE od 032.Marcus