Initial version of Tree
This commit is contained in:
parent
45d200e6ba
commit
6ad891e5ac
2 changed files with 122 additions and 15 deletions
133
LSL/raw/tree.lsl
133
LSL/raw/tree.lsl
|
@ -9,7 +9,10 @@ float g_fMaxGrowth = 150.0; // Maximum growth value
|
||||||
integer g_iLastGrowthStep = 0;
|
integer g_iLastGrowthStep = 0;
|
||||||
|
|
||||||
integer g_iLastUsedWater;
|
integer g_iLastUsedWater;
|
||||||
|
integer g_iChannel;
|
||||||
|
integer g_iListen;
|
||||||
|
key g_kAv;
|
||||||
|
string API_SERVER;
|
||||||
|
|
||||||
integer g_iTree;
|
integer g_iTree;
|
||||||
integer g_iTreeStump;
|
integer g_iTreeStump;
|
||||||
|
@ -64,6 +67,8 @@ setText() {
|
||||||
llSetText("Water: " + (string)g_iTotalWater+"%\nStage: " + (string)g_iTreeStage + "/1" + "\nProgress: " + (string)g_iTreeGrowth+"%\n \n \n \n \n \n \n \n", <1,1,1>,1);
|
llSetText("Water: " + (string)g_iTotalWater+"%\nStage: " + (string)g_iTreeStage + "/1" + "\nProgress: " + (string)g_iTreeGrowth+"%\n \n \n \n \n \n \n \n", <1,1,1>,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
integer g_iLastOwnerDev=1;
|
||||||
|
|
||||||
default
|
default
|
||||||
{
|
{
|
||||||
state_entry()
|
state_entry()
|
||||||
|
@ -90,17 +95,72 @@ default
|
||||||
llSay(0, "I am now ready to be packaged");
|
llSay(0, "I am now ready to be packaged");
|
||||||
llListen(global_ingredients, "", "", "");
|
llListen(global_ingredients, "", "", "");
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
llSay(0, "DEBUG MODE DETECTED.\n\n[ STARTING TIMERS ]");
|
llSay(0, "DEBUG MODE DETECTED.\n\n[ STARTING TIMERS ]");
|
||||||
llSetTimerEvent(1);
|
llSetTimerEvent(1);
|
||||||
|
#endif
|
||||||
|
|
||||||
setText();
|
setText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
changed(integer c) {
|
||||||
|
if(c&CHANGED_OWNER) {
|
||||||
|
if(!g_iLastOwnerDev)return;
|
||||||
|
|
||||||
|
g_iLastOwnerDev=0;
|
||||||
|
|
||||||
|
|
||||||
|
/*g_iTreeGrowth=0;
|
||||||
|
g_iTreeStage=0;
|
||||||
|
InitialAppearance();
|
||||||
|
g_iTotalWater=100;*/
|
||||||
|
llSetTimerEvent(2);
|
||||||
|
|
||||||
|
setText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
link_message(integer s,integer n,string m,key i) {
|
||||||
|
if(n == 0x004f) {
|
||||||
|
API_SERVER = DecipherService(m, "api") + "/zni";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
on_rez(integer t) {
|
||||||
|
if(t == 0 && llGetObjectName() == SAPLING_NAME) {
|
||||||
|
llSetObjectName(TREE_NAME);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
touch_start(integer t) {
|
||||||
|
// Show the menu if done growing
|
||||||
|
if(g_iTreeStage == 1 && g_iTreeGrowth >= 100) {
|
||||||
|
g_iChannel = llRound(llFrand(0xFFFF));
|
||||||
|
g_iListen = llListen(g_iChannel, "", llDetectedKey(0), "");
|
||||||
|
|
||||||
|
llDialog(llDetectedKey(0), "Tree\n=====\nDo you want to chop the tree down?\n\n* Tools are not yet implemented", ["Yes", "No"], g_iChannel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
http_response(key k, integer s, list m, string b) {
|
||||||
|
list lPar = llParseString2List(b, [";;"], []);
|
||||||
|
if(llList2String(lPar,0) == "GetServerID") {
|
||||||
|
string sJson = llList2String(lPar,1);
|
||||||
|
g_sServerID = llJsonGetValue(sJson, ["id"]);
|
||||||
|
requestProductForDelivery(SAPLING_NAME, g_kAv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
timer() {
|
timer() {
|
||||||
if(llGetUnixTime() > g_iLastUsedWater+5)
|
if(llGetUnixTime() > g_iLastUsedWater+5)
|
||||||
llWhisper(global_ingredients, xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "query"])));
|
llWhisper(global_ingredients, xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "query"])));
|
||||||
|
|
||||||
if(llGetUnixTime() > g_iLastGrowthStep + 120) {
|
integer iGrowTime = 120;
|
||||||
|
#ifdef DEBUG
|
||||||
|
iGrowTime = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if(llGetUnixTime() > g_iLastGrowthStep + iGrowTime) {
|
||||||
|
|
||||||
if(g_iTotalWater == 0) return;
|
if(g_iTotalWater == 0) return;
|
||||||
|
|
||||||
|
@ -117,13 +177,18 @@ default
|
||||||
setText();
|
setText();
|
||||||
|
|
||||||
iRoll = llRound(llFrand(100));
|
iRoll = llRound(llFrand(100));
|
||||||
if((iRoll%2)==0) {
|
if(iRoll >= 75) {
|
||||||
g_iTotalWater--;
|
g_iTotalWater--;
|
||||||
|
|
||||||
if(g_iTotalWater <= 0) g_iTotalWater = 0;
|
if(g_iTotalWater <= 0) g_iTotalWater = 0;
|
||||||
setText();
|
setText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(g_iTreeStage == 1 && g_iTreeGrowth == 100) {
|
||||||
|
llSetTimerEvent(0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(g_iTreeGrowth == 100) {
|
if(g_iTreeGrowth == 100) {
|
||||||
g_iTreeStage++;
|
g_iTreeStage++;
|
||||||
g_iTreeGrowth = 0;
|
g_iTreeGrowth = 0;
|
||||||
|
@ -133,26 +198,64 @@ default
|
||||||
llSetLinkPrimitiveParams(g_iSapling, [PRIM_SIZE,ZERO_VECTOR]);
|
llSetLinkPrimitiveParams(g_iSapling, [PRIM_SIZE,ZERO_VECTOR]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(g_iTreeStage == 1 && g_iTreeGrowth == 100) {
|
|
||||||
llSetTimerEvent(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object_rez(key kID) {
|
||||||
|
llSleep(2);
|
||||||
|
llRegionSayTo(kID, getIngredientChannel(kID), xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||||
|
"cmd", "init"
|
||||||
|
])));
|
||||||
|
|
||||||
|
llSleep(1);
|
||||||
|
llRegionSayTo(kID, getIngredientChannel(kID), xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||||
|
"cmd", "deposit",
|
||||||
|
"type", "Large Log",
|
||||||
|
"amount", 1,
|
||||||
|
"particle", "<0.502, 0.251, 0.000>",
|
||||||
|
"texture", NULL_KEY,
|
||||||
|
"dies", 1
|
||||||
|
])));
|
||||||
|
|
||||||
|
llRemoveInventory("Service Daemon [AC]");
|
||||||
|
llRemoveInventory(llGetScriptName());
|
||||||
|
}
|
||||||
|
|
||||||
listen(integer c,string n,key i,string m) {
|
listen(integer c,string n,key i,string m) {
|
||||||
string sJson = xtea_decrypt_string(m);
|
if(c == global_ingredients) {
|
||||||
if(llJsonGetValue(sJson, ["cmd"]) == "reply") {
|
|
||||||
if(llJsonGetValue(sJson, ["ingredient"]) == "Water") {
|
|
||||||
if(g_iTotalWater <= 75 && llGetUnixTime() > g_iLastUsedWater + 5) {
|
|
||||||
|
|
||||||
g_iTotalWater += 25;
|
string sJson = xtea_decrypt_string(m);
|
||||||
g_iLastUsedWater = llGetUnixTime();
|
if(llJsonGetValue(sJson, ["cmd"]) == "reply") {
|
||||||
llRegionSayTo(i, getIngredientChannel(i), xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "use", "id", llJsonGetValue(sJson, ["id"])])));
|
if(llJsonGetValue(sJson, ["ingredient"]) == "Water") {
|
||||||
|
if(g_iTotalWater <= 75 && llGetUnixTime() > g_iLastUsedWater + 5) {
|
||||||
|
|
||||||
setText();
|
g_iTotalWater += 25;
|
||||||
|
g_iLastUsedWater = llGetUnixTime();
|
||||||
|
llRegionSayTo(i, getIngredientChannel(i), xtea_encrypt_string(llList2Json(JSON_OBJECT, ["cmd", "use", "id", llJsonGetValue(sJson, ["id"])])));
|
||||||
|
|
||||||
|
setText();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}else if( c == g_iChannel) {
|
||||||
|
|
||||||
|
llListenRemove(g_iListen);
|
||||||
|
if(m == "Yes") {
|
||||||
|
llRezObject("Tree Log [AC]", llGetPos()+<0,0,0.5>, ZERO_VECTOR, ZERO_ROTATION, 1990);
|
||||||
|
|
||||||
|
llSetLinkAlpha(g_iTreeStump, 1, ALL_SIDES);
|
||||||
|
llSetLinkAlpha(g_iTree, 0, ALL_SIDES);
|
||||||
|
|
||||||
|
llSetLinkPrimitiveParams(g_iTree, [PRIM_POS_LOCAL, ZERO_VECTOR, PRIM_SIZE, ZERO_VECTOR]);
|
||||||
|
|
||||||
|
// Deliver 1 sapling, additional ones need to be bought
|
||||||
|
llHTTPRequest(API_SERVER + "/Get_Server_ID.php", [HTTP_MIMETYPE, "application/json", HTTP_METHOD, "POST"], xtea_encrypt_string(llList2Json(JSON_OBJECT, [
|
||||||
|
"psk", SERVER_PSK,
|
||||||
|
"name", "Farming"
|
||||||
|
])));
|
||||||
|
//requestProductForDelivery("Tree A Sapling [AC]");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1 +1,5 @@
|
||||||
|
//#define DEBUG 1
|
||||||
|
#define SAPLING_NAME "Tree A Sapling [AC]"
|
||||||
|
#define TREE_NAME "Tree A [AC]"
|
||||||
|
|
||||||
#include "../raw/tree.lsl"
|
#include "../raw/tree.lsl"
|
Loading…
Add table
Add a link
Reference in a new issue