Began process to make the game more stable
This commit is contained in:
parent
7229f3381e
commit
97f0e4a475
4 changed files with 262 additions and 17 deletions
|
@ -25,7 +25,7 @@ default
|
|||
}else{
|
||||
llListenRemove(genericListen);
|
||||
genericListen = llListen(card_channel, "", "", "");
|
||||
llSay(0, "Card is trying to find a table");
|
||||
//llSay(0, "Card is trying to find a table");
|
||||
llListen(t, "", "", "");
|
||||
g_iStart=t;
|
||||
llSay(card_channel, llList2Json(JSON_OBJECT, ["type", "alive", "boot", t]));
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
integer g_iStartParam;
|
||||
key g_kUser;
|
||||
key g_kTable;
|
||||
key g_kActualTable;
|
||||
integer DEBUG=FALSE;
|
||||
|
||||
integer card_channel = -32988199;
|
||||
integer hud_channel = -328478727;
|
||||
|
@ -15,9 +17,13 @@ Cards(){
|
|||
integer e = 10;
|
||||
integer CurCard = 1;
|
||||
integer NCard = 0;
|
||||
|
||||
if(DEBUG)llSay(0, "CARD LIST: "+llDumpList2String(g_lCards, " - "));
|
||||
|
||||
for(x=0;x<e;x++){
|
||||
if(llGetListLength(g_lCards) > x){
|
||||
string card_params = llList2String(g_lCards,x);
|
||||
if(DEBUG)llSay(0,"Card Parameters: "+card_params);
|
||||
llMessageLinked(LINK_SET,0,llJsonGetValue(card_params,["text"]), "fw_data : card_text"+(string)CurCard);
|
||||
} else {
|
||||
NCard++;
|
||||
|
@ -30,21 +36,25 @@ Cards(){
|
|||
|
||||
if(NCard>0){
|
||||
integer CardsToRequest = NCard;
|
||||
if(CardsToRequest>0)CardsToRequest=1;
|
||||
if(CardsToRequest == 0)return;
|
||||
else {
|
||||
llRegionSayTo(g_kTable,hud_channel, llList2Json(JSON_OBJECT, ["type","card_request","count", CardsToRequest]));
|
||||
llOwnerSay("Drawing "+(string)CardsToRequest+" cards");
|
||||
llRegionSayTo(g_kActualTable,hud_channel, llList2Json(JSON_OBJECT, ["type","card_request","count", CardsToRequest]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
integer g_iVis=0;
|
||||
POS(){
|
||||
if(!llGetAttached())return;
|
||||
g_iVis=1;
|
||||
vector local = <0.02395, 0.47113, -0.15166>;
|
||||
llSetPrimitiveParams([PRIM_POS_LOCAL, local]);
|
||||
}
|
||||
|
||||
POS2(){
|
||||
if(!llGetAttached())return;
|
||||
g_iVis=0;
|
||||
vector local = <0.02395, 1.77734, -0.15166>;
|
||||
llSetPrimitiveParams([PRIM_POS_LOCAL, local]);
|
||||
}
|
||||
|
@ -122,10 +132,12 @@ default
|
|||
}
|
||||
|
||||
listen(integer c,string n,key i,string m){
|
||||
if(DEBUG)llSay(0, m);
|
||||
if(g_iStartParam == c){
|
||||
// listen for the UUID of who to attach the HUD to!
|
||||
if(llJsonGetValue(m,["type"])=="activate"){
|
||||
g_kTable = (key)llJsonGetValue(m,["table"]);
|
||||
g_kActualTable = i;
|
||||
llWhisper(0, "HUD now activating...");
|
||||
key g_kUser = (key)llJsonGetValue(m, ["user"]);
|
||||
llRequestPermissions(g_kUser, PERMISSION_ATTACH);
|
||||
|
@ -138,13 +150,16 @@ default
|
|||
if(llGetListLength(g_lCards)<10 && llListFindList(g_lCards,[llJsonGetValue(m,["card"])])==-1){
|
||||
g_lCards += llJsonGetValue(m,["card"]);
|
||||
s("Added card: "+llJsonGetValue(m,["card", "text"]));
|
||||
Cards();
|
||||
}
|
||||
}
|
||||
} else if(llJsonGetValue(m,["type"]) == "select"){
|
||||
if(g_kTable != (key)llJsonGetValue(m,["table"]))return;
|
||||
if(llJsonGetValue(m,["czar"]) == (string)g_kUser){
|
||||
s("You are the Card Czar, hiding the HUD");
|
||||
POS2();
|
||||
g_iCanSelect=0;
|
||||
Cards();
|
||||
} else {
|
||||
g_iSelectNum = (integer)llJsonGetValue(m,["sel_count"]);
|
||||
POS();
|
||||
|
@ -156,6 +171,7 @@ default
|
|||
g_iCanSelect=1;
|
||||
}
|
||||
} else if(llJsonGetValue(m,["type"]) == "judging"){
|
||||
if(g_kTable != (key)llJsonGetValue(m,["table"]))return;
|
||||
s("Judging begun. HUD hidden!");
|
||||
POS2();
|
||||
g_lSelected=[];
|
||||
|
@ -167,7 +183,7 @@ default
|
|||
g_iChan=0;
|
||||
}
|
||||
} else if(llJsonGetValue(m,["type"])=="die"){
|
||||
llSay(0, "(DEBUG)\nm: "+m+"\n-> Table: "+(string)g_kTable+"\n-> User: "+(string)g_kUser);
|
||||
if(DEBUG)llSay(0, "(DEBUG)\nm: "+m+"\n-> Table: "+(string)g_kTable+"\n-> User: "+(string)g_kUser);
|
||||
if(llJsonGetValue(m,["table"])==(string)g_kTable){
|
||||
if(llJsonGetValue(m,["avatar"])==(string)g_kUser || llJsonGetValue(m,["avatar"])==(string)NULL_KEY || llJsonGetValue(m,["avatar"])==""){
|
||||
llSay(0, "Deactivating HUD");
|
||||
|
@ -193,6 +209,7 @@ default
|
|||
integer CardNum = llList2Integer(g_lSelected, x);
|
||||
string CardQuery = llList2String(g_lCards, (CardNum-1));
|
||||
lToRemove += CardQuery;
|
||||
CardQuery = llJsonSetValue(CardQuery, ["user"], g_kUser);
|
||||
sActualCardData = llJsonSetValue(sActualCardData, [x], CardQuery);
|
||||
}
|
||||
x=0;
|
||||
|
@ -210,7 +227,7 @@ default
|
|||
Highlight();
|
||||
Cards();
|
||||
//llSay(0, "(DEBUG) Sending card(s) to table: "+sActualCardData);
|
||||
llRegionSayTo(g_kTable, hud_channel, llList2Json(JSON_OBJECT, ["type", "cards", "cards", sActualCardData]));
|
||||
llRegionSayTo(g_kActualTable, hud_channel, llList2Json(JSON_OBJECT, ["type", "cards", "cards", sActualCardData]));
|
||||
POS2();
|
||||
}
|
||||
}
|
||||
|
@ -232,7 +249,7 @@ default
|
|||
attach(key id){
|
||||
if(id == NULL_KEY){
|
||||
llWhisper(0, "HUD is deactivating...");
|
||||
llRegionSayTo(g_kTable, hud_channel, llList2Json(JSON_OBJECT, ["type", "leave", "avatar", g_kUser]));
|
||||
llRegionSayTo(g_kActualTable, hud_channel, llList2Json(JSON_OBJECT, ["type", "leave", "avatar", g_kUser]));
|
||||
//llRemoveInventory(llGetScriptName());
|
||||
} else {
|
||||
g_kUser=id;
|
||||
|
@ -306,7 +323,7 @@ state detach
|
|||
state_entry(){
|
||||
integer i=0;
|
||||
integer end = llGetNumberOfPrims();
|
||||
for(i=1;i<=end;i++){
|
||||
for(i=2;i<=end;i++){
|
||||
llSetLinkPrimitiveParamsFast(i,[PRIM_SIZE,ZERO_VECTOR,PRIM_POS_LOCAL,ZERO_VECTOR,PRIM_ROT_LOCAL,ZERO_ROTATION]);
|
||||
}
|
||||
llSleep(2);
|
||||
|
|
|
@ -6,6 +6,7 @@ integer card_channel = -32988199;
|
|||
integer hud_channel = -328478727;
|
||||
|
||||
list g_lPoints;
|
||||
integer g_iStarted;
|
||||
GiveUserPoint(key kUser){
|
||||
// point list - user, num of points
|
||||
integer index = llListFindList(g_lPoints,[kUser]);
|
||||
|
@ -16,10 +17,38 @@ GiveUserPoint(key kUser){
|
|||
curPoint++;
|
||||
g_lPoints=llListReplaceList(g_lPoints,[curPoint], index+1,index+1);
|
||||
}
|
||||
UpScores();
|
||||
}
|
||||
|
||||
UpScores(){
|
||||
|
||||
integer i=0;
|
||||
integer iScores;
|
||||
integer end = llGetNumberOfPrims();
|
||||
for(i=0;i<=end;i++){
|
||||
string name = llGetLinkName(i);
|
||||
if(name == "Scores"){
|
||||
iScores=i;
|
||||
jump outScore;
|
||||
}
|
||||
}
|
||||
@outScore;
|
||||
i=0;
|
||||
end=llGetListLength(g_lPoints);
|
||||
string sScores;
|
||||
for(i=0;i<end;i+=2){
|
||||
sScores += llKey2Name(llList2String(g_lPoints, i))+": "+llList2String(g_lPoints,i+1)+"\n";
|
||||
}
|
||||
llSetLinkPrimitiveParams(iScores, [PRIM_TEXT, sScores, <1,0,0>,1]);
|
||||
}
|
||||
|
||||
list g_lJudgePile;
|
||||
integer g_iTotalJudgeUsers;
|
||||
|
||||
string g_sVersion = "1.0.0.0000";
|
||||
key g_kToken;
|
||||
integer DEBUG = FALSE;
|
||||
float offset;
|
||||
list g_lReqs;
|
||||
string URL = "https://api.zontreck.dev/ls_bionics";
|
||||
Send(string Req,string method){
|
||||
|
@ -142,11 +171,14 @@ key g_kID;
|
|||
integer g_iBlockRez = 0;
|
||||
key g_kCurrentBlackCard;
|
||||
list g_lPendingCards;
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
llSitTarget(ZERO_VECTOR,ZERO_ROTATION);
|
||||
Chairs=[];
|
||||
UpScores();
|
||||
//llSay(0, "Activating Setup Mode");
|
||||
//llSay(0, "Scanning linkset for positions of prims");
|
||||
integer i=0;
|
||||
|
@ -246,12 +278,13 @@ state active
|
|||
g_iBlockRez=0;
|
||||
g_lPending=[];
|
||||
|
||||
llSay(card_channel, llList2Json(JSON_OBJECT, ["type", "die", "table", g_kID]));
|
||||
llListen(hud_channel, "", "", "");
|
||||
llListen(card_channel, "", "", "");/*
|
||||
integer chan = llRound(llFrand(548378));
|
||||
g_lPendingCards += [chan, "null|black"];
|
||||
llRezObject("Playing Card [LS]", llGetPos(), ZERO_VECTOR, ZERO_ROTATION, chan);*/
|
||||
llSitTarget(<0,0,1>, ZERO_ROTATION);
|
||||
|
||||
}
|
||||
|
||||
http_response(key r,integer s,list m,string b){
|
||||
|
@ -260,14 +293,16 @@ state active
|
|||
g_lReqs = llDeleteSubList(g_lReqs,0,1);
|
||||
|
||||
list lTmp = llParseString2List(b,[";;",";"],[]);
|
||||
if(DEBUG)llSay(0, "HTTP REPLY: "+b);
|
||||
string Script = llList2String(lTmp,0);
|
||||
if(Script == "Modify_Deck"){
|
||||
llSay(0, "Deck generated!");
|
||||
} else if(Script == "Get_Card"){
|
||||
key Sender = (key)llList2String(lTmp,1);
|
||||
list Params = llJson2List(llBase64ToString(llList2String(lTmp,2)));//llParseString2List(llBase64ToString(llList2String(lTmp,2)), ["|"],[]);
|
||||
if(DEBUG)llSay(0, "HTTP REPLY: "+b);
|
||||
list Params = llJson2List(llBase64ToString(llList2String(lTmp,2)));
|
||||
if(DEBUG)llSay(0, "PARAMETER LIST: "+llList2CSV(Params));
|
||||
|
||||
//llParseString2List(llBase64ToString(llList2String(lTmp,2)), ["|"],[]);
|
||||
integer i=0;
|
||||
integer end = llGetListLength(Params);
|
||||
for(i=0;i<end;i++){
|
||||
|
@ -276,7 +311,7 @@ state active
|
|||
integer num_req = (integer)llJsonGetValue(llList2String(Params,i),["num"]);
|
||||
integer rezzed = (integer)llJsonGetValue(llList2String(Params,i), ["rezzed"]);
|
||||
if(rezzed==0)
|
||||
llRegionSayTo(Sender, hud_channel, llList2Json(JSON_OBJECT, ["type", "card", "avatar", llGetOwnerKey(Sender), "card", llList2Json(JSON_OBJECT, ["text", llList2String(Params,i)])]));
|
||||
llRegionSayTo(Sender, hud_channel, llList2Json(JSON_OBJECT, ["type", "card", "avatar", llGetOwnerKey(Sender), "card", llList2Json(JSON_OBJECT, ["text", llJsonGetValue(llList2String(Params,i), ["text"])])]));
|
||||
else{
|
||||
if(color){
|
||||
g_kCurrentBlackCard = Sender;
|
||||
|
@ -292,11 +327,39 @@ state active
|
|||
}
|
||||
|
||||
key czar = llList2String(Players,g_iCzar);
|
||||
llRegionSay(hud_channel, llList2Json(JSON_OBJECT, ["type", "select", "czar", czar, "sel_count", num_req]));
|
||||
llSay(0, "Card Czar is: secondlife:///app/agent/"+(string)czar+"/about");
|
||||
|
||||
llRegionSay(hud_channel, llList2Json(JSON_OBJECT, ["type", "select", "czar", czar, "sel_count", num_req, "table", g_kID]));
|
||||
}
|
||||
llRegionSayTo(Sender, card_channel, llList2Json(JSON_OBJECT, ["type", "set", "card", llList2Json(JSON_OBJECT, ["text", card_text, "color", color, "num", num_req])]));
|
||||
llRegionSayTo(Sender, card_channel, llList2Json(JSON_OBJECT, ["type", "set", "card", llList2Json(JSON_OBJECT, ["text", card_text, "color", color, "num", num_req, "czar", llList2String(Players,g_iCzar), "user", llList2String(lTmp,3)])]));
|
||||
}
|
||||
}
|
||||
} else if(Script == "Modify_Card"){
|
||||
string Sender = llList2String(lTmp,6);
|
||||
string Color = llList2String(lTmp,2);
|
||||
string Text = llBase64ToString(llList2String(lTmp,3));
|
||||
integer num = llList2Integer(lTmp,4);
|
||||
string user = llList2String(lTmp,5);
|
||||
|
||||
if(DEBUG)llSay(0, "SEARCH RESULT: "+Text);
|
||||
} else if(Script == "No More Cards"){
|
||||
|
||||
llSay(0, "Game over! No more black cards exist in the deck... Checking for winner...");
|
||||
integer iLastHigh;
|
||||
key kLastHigh;
|
||||
integer x=0;
|
||||
integer xe = llGetListLength(g_lPoints);
|
||||
for(x=0;x<xe;x++){
|
||||
key User = llList2Key(g_lPoints,x);
|
||||
integer points = llList2Integer(g_lPoints,x+1);
|
||||
if(points>iLastHigh){
|
||||
iLastHigh=points;
|
||||
kLastHigh = User;
|
||||
}
|
||||
}
|
||||
|
||||
llSay(0, "WINNER IS: secondlife:///app/agent/"+(string)kLastHigh+"/about with "+(string)iLastHigh+" points total!!");
|
||||
llResetScript();
|
||||
}
|
||||
|
||||
|
||||
|
@ -324,24 +387,62 @@ state active
|
|||
llRegionSayTo(i,llList2Integer(g_lPending,index+1), llList2Json(JSON_OBJECT, ["type", "activate", "user", llList2String(g_lPending,index), "table", g_kID]));
|
||||
g_lPending = llDeleteSubList(g_lPending, index,index+1);
|
||||
}
|
||||
} else if(llJsonGetValue(m,["type"]) == "cards"){
|
||||
list lCards = llJson2List(llJsonGetValue(m,["cards"]));
|
||||
g_lJudgePile += lCards;
|
||||
g_iTotalJudgeUsers++;
|
||||
|
||||
if(g_iTotalJudgeUsers == llGetListLength(Players)-1){
|
||||
llSay(hud_channel, llList2Json(JSON_OBJECT, ["type", "judging", "table", g_kID]));
|
||||
llSay(0, "Card Czar: Pick the card you want!");
|
||||
// Initiate the rezzing procedure
|
||||
integer x =0;
|
||||
integer e = llGetListLength(g_lJudgePile);
|
||||
for(x=0;x<e;x++){
|
||||
integer bootNum = llRound(llFrand(34857483));
|
||||
string json = llList2String(g_lJudgePile, x);
|
||||
key user = llJsonGetValue(json, ["user"]);
|
||||
g_lPendingCards += [bootNum, (string)user+"|"+llJsonGetValue(json,["text"])];
|
||||
|
||||
|
||||
llRezObject("Playing Card [LS]", llGetPos(), ZERO_VECTOR,ZERO_ROTATION, bootNum);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if(c==card_channel){
|
||||
if(llJsonGetValue(m,["type"])=="alive"){
|
||||
llSay(0, "IN ALIVE BLOCK");
|
||||
//llSay(0, "IN ALIVE BLOCK");
|
||||
integer index = llListFindList(g_lPendingCards,[(integer)llJsonGetValue(m,["boot"])]);
|
||||
if(index==-1){
|
||||
return;
|
||||
}
|
||||
|
||||
string pendingCommand = llList2String(g_lPendingCards,index+1);
|
||||
list lCmd = llParseString2List(pendingCommand, ["|"],[]);
|
||||
|
||||
g_lPendingCards = llDeleteSubList(g_lPendingCards,index,index+1);
|
||||
|
||||
llRegionSayTo(i, (integer)llJsonGetValue(m,["boot"]), llList2Json(JSON_OBJECT, ["type", "activate", "table", g_kID]));
|
||||
// Calculate position offset
|
||||
llSleep(1);
|
||||
llRegionSayTo(i, card_channel, llList2Json(JSON_OBJECT, ["type", "position", "pos", llGetPos()+<0,0,0.5>]));
|
||||
if(llList2String(lCmd,0) == "null"){
|
||||
offset = 0.0;
|
||||
}
|
||||
llRegionSayTo(i, card_channel, llList2Json(JSON_OBJECT, ["type", "position", "pos", llGetPos()+<0,offset,0.75>]));
|
||||
if(DEBUG)llSay(0, "Alive request on the Cards Channel: "+m);
|
||||
Send("/Modify_Card.php?TYPE_OVERRIDE=GET_CARD&TABLE_ID="+(string)g_kID+"&COLOR=1&DRAW_COUNT=1&SENDER="+(string)i+"&REZZED=1", "POST");
|
||||
|
||||
string color = "1";
|
||||
offset += 0.25;
|
||||
string cmd= "GET_CARD";
|
||||
if(llList2String(lCmd,1) != "black"){
|
||||
//cmd = "SEARCH&CARD_TEXT="+llStringToBase64(llList2String(lCmd,1))+"&AVATAR="+llList2String(lCmd,0);
|
||||
color="0";
|
||||
llRegionSayTo(i, card_channel, llList2Json(JSON_OBJECT, ["type", "set","card", llList2Json(JSON_OBJECT, ["text", llList2String(lCmd,1), "color", 0, "num", 0, "czar", llList2String(Players, g_iCzar), "user", llList2String(lCmd,0)])]));
|
||||
return;
|
||||
}
|
||||
Send("/Modify_Card.php?TYPE_OVERRIDE="+cmd+"&TABLE_ID="+(string)g_kID+"&COLOR="+color+"&DRAW_COUNT=1&SENDER="+(string)i+"&REZZED=1", "POST");
|
||||
|
||||
|
||||
|
||||
} else if(llJsonGetValue(m,["type"]) == "final"){
|
||||
key kUser = (key)llJsonGetValue(m,["user"]);
|
||||
|
@ -351,6 +452,19 @@ state active
|
|||
llSay(card_channel, llList2Json(JSON_OBJECT, ["type", "die", "table", g_kID]));
|
||||
// Start next round!
|
||||
// Load the next black card to trigger selection mode
|
||||
integer boot = llRound(llFrand(5483758));
|
||||
g_lPendingCards += [boot, "null|black"];
|
||||
|
||||
integer x =0;
|
||||
integer ends = llGetListLength(g_lJudgePile);
|
||||
g_iTotalJudgeUsers = 0;
|
||||
for(x=0;x<ends;x++){
|
||||
string card = llList2String(g_lJudgePile,x);
|
||||
Send("/Modify_Card.php?TYPE_OVERRIDE=INSERT&TABLE_ID="+(string)g_kID+"&CARD_TEXT="+llStringToBase64(llJsonGetValue(card,["text"])), "POST");
|
||||
}
|
||||
|
||||
g_lJudgePile=[];
|
||||
llRezObject("Playing Card [LS]", llGetPos(), ZERO_VECTOR,ZERO_ROTATION,boot);
|
||||
}
|
||||
} else if(llListFindList(g_lListener,[c])!=-1){
|
||||
integer index = llListFindList(g_lListener,[c]);
|
||||
|
@ -379,14 +493,21 @@ state active
|
|||
llResetScript();
|
||||
}
|
||||
|
||||
timer(){
|
||||
Sends();
|
||||
}
|
||||
|
||||
touch_start(integer t){
|
||||
string name = llGetLinkName(llDetectedLinkNumber(0));
|
||||
if(name == "START"){
|
||||
|
||||
if(g_iStarted)return;
|
||||
g_iStarted=TRUE;
|
||||
if(!(llGetListLength(Players) > 1)){
|
||||
llSay(0, "Must have more than 1 player to start!");
|
||||
return;
|
||||
}
|
||||
// Begin the game loop
|
||||
llSetTimerEvent(5);
|
||||
integer chan = llRound(llFrand(548378));
|
||||
g_lPendingCards += [chan, "null|black"];
|
||||
llRezObject("Playing Card [LS]", llGetPos(), ZERO_VECTOR, ZERO_ROTATION, chan);
|
||||
|
@ -398,6 +519,11 @@ state active
|
|||
llDialog(i, "Are you male or female?", ["Female", "Male"], rnd);
|
||||
|
||||
llRequestPermissions(i, PERMISSION_TRIGGER_ANIMATION);
|
||||
} else if(name == "STOP"){
|
||||
if(g_iStarted){
|
||||
Send("/Modify_Card.php?TYPE_OVERRIDE=NULCARD&TABLE_ID="+(string)g_kID,"GET");
|
||||
llSay(0, "Stopping the game please wait...");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
102
SOURCE/LSL/UserCard.lsl
Normal file
102
SOURCE/LSL/UserCard.lsl
Normal file
|
@ -0,0 +1,102 @@
|
|||
string g_sPath;
|
||||
integer g_iColor;
|
||||
integer g_iNum;
|
||||
string g_sText;
|
||||
key g_kAuthor;
|
||||
|
||||
integer g_iChan;
|
||||
integer g_iLstn;
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
llMessageLinked(LINK_SET,0,"","fw_reset");
|
||||
}
|
||||
|
||||
changed(integer x){
|
||||
if(x&CHANGED_REGION_START){
|
||||
llResetScript();
|
||||
}
|
||||
}
|
||||
|
||||
on_rez(integer t){
|
||||
if(t == 0){
|
||||
llResetScript();
|
||||
}
|
||||
}
|
||||
|
||||
link_message(integer s,integer n,string m,key i){
|
||||
if(n==0){
|
||||
if(i=="fw_ready"){
|
||||
g_sPath = "/";
|
||||
llMessageLinked(LINK_SET,0,"c=black", "fw_conf : card_text");
|
||||
llMessageLinked(LINK_SET,0,"c=black", "fw_conf : card_helpertext");
|
||||
llSetLinkColor(LINK_ROOT, <1,1,1>, 0);
|
||||
llSetLinkColor(LINK_ROOT, <1,1,1>, 1);
|
||||
g_iChan = llRound(llFrand(54738577));
|
||||
g_iLstn = llListen(g_iChan, "", llGetOwner(), "");
|
||||
llDialog(llGetOwner(), "[Playing Card]\n\nIs this card supposed to be a black card or a white card?", ["White", "Black"], g_iChan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
listen(integer c,string n,key i,string m){
|
||||
if(g_sPath == "/"){
|
||||
if(m == "White"){
|
||||
g_iColor=0;
|
||||
llMessageLinked(LINK_SET,0,"Cards Against Humanity", "fw_data : card_helpertext");
|
||||
llTextBox(llGetOwner(), "[Playing Card]\n\nWhat text should be on the card?", g_iChan);
|
||||
g_sPath = "/text";
|
||||
} else if(m == "Black"){
|
||||
g_iColor=1;
|
||||
llMessageLinked(LINK_SET,0,"c=white","fw_conf : card_text");
|
||||
llMessageLinked(LINK_SET,0,"c=white","fw_conf : card_helpertext");
|
||||
llSetLinkColor(LINK_ROOT,<0.2,0.2,0.2>,1);
|
||||
llSetLinkColor(LINK_ROOT,<0.2,0.2,0.2>,0);
|
||||
|
||||
g_sPath = "/num_req";
|
||||
llDialog(llGetOwner(), "[Playing Card]\n\nHow many cards do you want to require the player to draw?", ["1","2", "3","4","5","6","7","8","9","10"], g_iChan);
|
||||
}
|
||||
} else if(g_sPath == "/text"){
|
||||
llMessageLinked(LINK_SET,0,m,"fw_data : card_text");
|
||||
g_sText = m;
|
||||
g_sPath = "/confirm";
|
||||
llDialog(llGetOwner(), "Does this card look correct?\n\nIf you select yes, your card will be uploaded to the community deck for this year. If you decide you no longer wish your card to be uploaded, you will need to contact LS Bionics Support", ["Yes", "No"], g_iChan);
|
||||
} else if(g_sPath == "/num_req"){
|
||||
g_iNum = (integer)m;
|
||||
g_sPath = "/text";
|
||||
if(g_iNum == 1){
|
||||
llMessageLinked(LINK_SET,0,"Cards Against Humanity", "fw_data : card_helpertext");
|
||||
}else llMessageLinked(LINK_SET,0,"Pick ("+(string)g_iNum+")\nDraw ("+(string)g_iNum+")", "fw_data : card_helpertext");
|
||||
llTextBox(llGetOwner(), "What text do you want on this card?", g_iChan);
|
||||
} else if(g_sPath == "/confirm"){
|
||||
if(m == "Yes"){
|
||||
llSay(0, "Uploading card...");
|
||||
list dat = llParseString2List(llGetDate(),["-"],[]);
|
||||
llSetObjectName("CAH: "+llList2String(dat,0)+" Playing Card [LS]");
|
||||
llSetObjectDesc("Card created by: "+llKey2Name(llGetOwner()));
|
||||
g_kAuthor = llGetOwner();
|
||||
string CARD_ID = (string)llGetOwner()+"-"+(string)llGetUnixTime();
|
||||
llHTTPRequest("https://api.zontreck.dev/ls_bionics/Modify_Card.php", [HTTP_METHOD, "POST", HTTP_MIMETYPE, "application/x-www-form-urlencoded"], "DECK="+llList2String(dat,0)+"&CARD_TEXT="+llStringToBase64(g_sText)+"&COLOR="+(string)g_iColor+"&DRAW_COUNT="+(string)g_iNum+"&CARD_ID="+llEscapeURL(CARD_ID));
|
||||
state myCard;
|
||||
} else if(m == "No"){
|
||||
llSay(0, "Card creation cancelled! Deleting temp data");
|
||||
llResetScript();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
state myCard
|
||||
{
|
||||
state_entry(){
|
||||
llRemoveInventory("FURWARE text v2.0.1");
|
||||
llSay(0, "You now have the only permanent physical copy of this card on the grid as you are the card's creator!");
|
||||
llSay(0, "You can play with this card if you have this year's community deck purchased.");
|
||||
llSay(0, "NOTE: If you decide to remove this card from play in the community deck, you will need to send this physical card object to the LS support representative.");
|
||||
llSay(0, "(This card is now read-only. The required script for modification of the mesh text has been removed)");
|
||||
}
|
||||
touch_start(integer t){
|
||||
llSay(0, "/me created by secondlife:///app/agent/"+(string)g_kAuthor+"/about");
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue