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;
}
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?
Ocito je problem do SaveHouse
.
Daj nam kod
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;
}
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.